操作系统基础学习总结第一章
在多道程序环境中,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,已不可预知的速度向前推进。用户态切换到内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权。线程:CPU调度执行单位(时间片、寄存器、栈)一个进程至少一个主线程,线程共享所属进程全部资源。内中断分类:陷入(请求内核服务)、故障(缺页处理)、终止(程序bug)内中断(
第一章
1.1操作系统是系统资源的管理者

操作系统 本质上是对硬件机器的扩展 将裸机改造成功能更强、使用更方便的机器。
1.2操作系统的四个特征
并发、共享、虚拟、异步
并发:两个或多个事件在同一时间间隔内发生。宏观上同时发生,微观上交替发生。
并行:两个或多个事件在同一时刻同时发生。

共享:系统中的资源可供内存中多个并发执行的进程共同使用。

虚拟:把一个物理上的实体变为若干个逻辑上的对应物。

异步:在多道程序环境中,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,已不可预知的速度向前推进。
1.3操作系统的发展与分类
手工操作阶段;批处理阶段(单批处理;多批处理);分时操作系统;实时操作系统
1.4操作系统的运行机制
CPU状态:内核态和用户态
处于内核态,说明此时正在运行的是内核程序,此时可以执行特权指令
处于用户态,说明此时正在运行的是应用程序,此时只能执行非特权指令
内核态切换到用户态:执行一条特权指令--修改PSW的标志位为“用户态”、
用户态切换到内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权。
1.5中断和异常
中断的类型
内中断(异常、例外):与当前执行的指令有关,中断信号来源于CPU内部
内中断触发场景:
(1)若当前执行的指令是非法的,则会引发一个中断信号
(2)应用程序想请求操作系统内核服务,执行陷入指令,引发中断信号
外中断(中断):与当前执行的指令无关,中断信号来源于CPU外部
外中断触发场景:
- 时钟中断,由外部时钟部件发来的中断信号
- I/O终端,由输入/输出设备发来的中断信号

内中断分类:陷入(请求内核服务)、故障(缺页处理)、终止(程序bug)
外中断分类:时钟中断、I/O中断请求
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序来处理。(中断向量表实现)
1.6系统调用
系统调用:操作系统提供给用户程序调用内核功能的接口。
系统调用过程
传递系统调用参数->执行陷入指令(用户态)->由操作系统内核程序处理系统调用请求 ->返回应用程序
陷入指令(trap)
陷入指令允许用户程序主动请求操作系统内核服务(如文件读写、进程创建等),或在发生不可恢复错误(如除零、非法指令)时将控制权交还给操作系统。

1.7操作系统体系结构

分为大内核和微内核。微内核只包括时钟管理、中断处理、原语。
附:Windows/Linux进程与线程本质区别
进程:资源分配单位(内存、地址空间、文件句柄、权限)。
线程:CPU调度执行单位(时间片、寄存器、栈)一个进程至少一个主线程,线程共享所属进程全部资源。
底层本质差异
1、地址空间
进程:独立虚拟地址空间,A进程看不到B进程,互相隔离。
线程:共享同一个进程地址空间,同进程线程读写同一块内存。
2、资源拥有
进程独有:虚拟内存页表、PID、进程 PCB、打开文件描述符、信号处理、用户权限
线程独有:线程栈、寄存器集合、线程 TCB、线程 ID
线程不拥有内存资源,只借用进程资源运行
3、切换开销
进程切换:切换页表、刷新TLB、切换地址空间 开销极大
线程切换:只切换寄存器、栈指针、不换页表 开销极小
4、健壮性
一个进程崩溃:只自己死,不影响其他进程
一个线程崩溃:整个进程一起崩溃(共用地址空间)
5、通信方式
进程间IPC:管道、消息队列、共享内存、socket ,复杂低效
线程间通信:直接读写全局变量,简单高效,但要加锁同步
Windows 与 Linux 线程模型差异
Linux
1、内核线程+用户线程两层模型
2、线程本质就是特殊进程,内核不区分进程/线程
3、同进程多线程:共享PID
4、调度粒度统一,内核直接调度线程
Windows
1、严格区分进程对象和线程对象,内核天生线程调度
2、进程负责资源、线程负责执行
3、线程优先级严格分级,调度比Linux更偏向抢占实时
面试总结
1、进程是资源分配最小单位,线程是CPU调度最小单位
2、进程地址空间独立,线程共享进程地址空间
3、进程切换开销远大于线程切换
4、Linux线程用轻量级进程实现,Windows内核原生支持线程
进程虚拟地址空间 + 栈溢出 + 堆内存管理
进程虚拟地址空间(32位/64位 标准布局)
要点:每个进程有独立虚拟地址空间,隔离互不干扰;物理内存由MMU+页表映射
经典32位进程地址空间排布(从上到下)

各区关键特性
- 代码段.text 只读、共享、不可写 存放程序机器指令
- 数据段/bss 全局变量、static静态变量 bss不占用磁盘文件,运行时清零分配
- 堆Heap 手动管理:malloc/free new/delete 向上扩张,自由申请释放,碎片多
- 栈Stack 系统自动管理,函数调用自动分配回收 容量极小、速度极快
- 内核空间 权限最高,用户态无法直接访问
栈详解&栈溢出
栈特点:内存连续,自动分配自动释放;生长方向:从高地址到低地址;
栈溢出原因:数组越界;缓冲区拷贝不限制长度;超大局部数组
堆内存管理
堆核心特点:空间大、生命周期手动控制;生长方向:低地址到高地址;不连续碎片化,分配速度慢于栈
全局变量在数据段 /bss,局部变量在栈,动态对象在堆。
学习参考:王道操作系统
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)