操作系统
一、基本特征:
1.并发:在一段时间能运行多个程序。
并行:同一时刻能运行多个指令,需要硬件支持,如同多流水线或多处理器。
操作系统通过引入进程和线程,使得程序能够并发运行。
2.共享:系统中的资源可以被多个并发进程共同使用。
两种共享方式:互斥共享--又称为临界资源,例如打印机,在同一时间只允许一个进程访问
同时共享
3.虚拟:虚拟技术把一个物理实体转换为多个逻辑实体。
两种虚拟技术:时分复用技术--多个进程能在同一个处理器上并发执行,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。
空分复用技术--虚拟内存,将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存 中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。
4.异步:进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。
二、基本功能
1.进程管理 2.内存分配 3.文件管理 4.设备管理
三、系统调用
如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。
Linux 的系统调用主要有以下这些:
Task | Commands |
---|---|
进程控制 | fork(); exit(); wait(); |
进程通信 | pipe(); shmget(); mmap(); |
文件操作 | open(); read(); write(); |
设备操作 | ioctl(); read(); write(); |
信息维护 | getpid(); alarm(); sleep(); |
安全 | chmod(); umask(); chown(); |
四、大内核和微内核
1.大内核:是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。
2.微内核:由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。
在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。
五、中断分类
1.外中断:由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。
2.异常:由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。
3.陷入:在用户程序中使用系统调用。
进程管理
1.进程:是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。
下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行
2.线程:线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。