【操作系统】操作系统基本概念
本系列参考资料:
王道操作系统课程
基本概念与知识点
OS:控制和管理整个计算机系统的硬件和软件资源,并合理组织调度计算机的工作和资源的分配,以提供用户和其他软件方便的接口和环境。是计算机系统中最基本的系统软件。
OS提供的功能:处理机管理、存储器管理、文件管理、设备管理。
OS的特征
并发:两个或多个事件统一时间间隔内发生,这些事件在宏观上是同时发生,但微观上是交替发生。
并行:指两个或多个事件在同一时刻同时发生。
单核CPU:各个程序只能并发执行
多核CPU:多个程序可以并行执行
共享:系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享:一个时间段内只允许一个进程访问该资源
同时共享:一个时间段内微观交替对该资源进行访问。
虚拟:将一个物理上的实体变为若干个逻辑上的对应物。空分复用、时分复用。
异步:允许多个程序并发执行,但由于资源有限,进程的执行以不可预知的速度向前推进。
OS历史
手工操作阶段(纸带机)->单道批处理系统->多道批处理系统->分时操作系统->实时操作系统
手工操作阶段:工作人员将打孔纸带输入到计算机中,人机速度矛盾
多道批处理系统:多道程序并发执行,资源利用率高,但是不提供人机交互功能
分时操作系统:计算机以时间片为单位轮流为各个作业服务,各个用户可通过终端与计算机进行交互。
实时操作系统:计算机系统接收到外部信号后及时进行处理,并要在严格的时限内处理完事件,主要特点是及时性和可靠性。
内核态与用户态
CPU中有程序状态字寄存器PSW,其中有个二进制位,表示内核态或用户态。
处于内核态/管态:说明此时正在运行的是内核程序,此时可执行特权指令。
处于用户态/目态:说明此时正在运行的是应用程序,此时只能执行非特权指令
内核态→用户态:执行特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
中断
内中断:与当前执行的指令有关,中断信号来源于CPU内部。也称为异常。比如陷入、故障、终止。
外中断:与当前执行的指令无关,中断信号来源于CPU外部。比如时钟中断、I/O中断
中断机制:
不同的中断信号,需要用不同的徽宗大观处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型查询“中断向量表”,以此来找到相应的的中断处理程序在内存中的存放位置。
系统调用与库函数
系统调用:运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。它通过软中断向内核态发出一个明确的请求。系统调用实现了用户态进程和硬件设备之间的大部分接口。
凡是与共享资源有关的操作,都必须通过系统调用的方式向OS内核提出服务请求,由OS内核代为完成,这样可保证系统的稳定性和安全性,防止用户进行非法操作。
库函数:用于提供用户态服务,可能调用封装了一个或几个不同的系统调用,也可能直接提供用户态服务。
常见系统调用:open, close, read, write, ioctl,fork,clone,exit,getpid,access,chdir,chmod,stat,brk,mmap等,需要包含unistd.h等头文件。
常见库函数:printf,scanf,fopen,fclose,fgetc,fgets,fprintf,fsacnf,fputc,calloc,free,malloc,realloc,strcat,strchr,strcmp,strcpy,strlen,strstr等,需要包含stdio.h,string.h,alloc.h,stdlib.h等头文件。
系统调用与库函数的区别:
- 系统调用通常不可替换,而库函数可以替换。
- 系统调用通常提供最小接口,而库函数可提供较复杂功能
- 系统调用运行在内核空间,而库函数运行在用户空间
- 系统调用返回一个整数值,而库函数并非如此
- 使用库函数的移植性更好,而且系统调用开销更大。
- 系统调用运行时间属于系统时间,库函数运行时间属于用户时间
内核
大内核:将操作系统的主要功能模块都作为系统内核,运行在内核态。优:高性能。缺:内核代码庞大,结构混乱。
比如:Linux、UNIX
微内核:只把最基本的功能保留在内核。优:结构清晰,方便维护。缺:需要频繁在核心态与用户态之间切换,性能低。
比如Windows NT
虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(virtual machine VM),每个虚拟机器都可以独立运行一个操作系统。
虚拟机管理程序(virtual machine monitor VMM)