文章目录
操作系统介绍
- 不像操作系统为CPU和内存提供抽象,操作系统不会为程序创建专用的虚拟磁盘,操作系统管理磁盘的软件叫做文件系统
- 文件系统必须做很多工作
- 确定数据位于磁盘那个位置
- 在文件系统维护的结构中对其进行记录,这样做需要向底层存储设备发出IO请求,以读取现有结构或更新(写入)它们,操作系统提供了一种通过系统调用来访问设备的方法,叫做标准库
- 抽象使我们不需要考虑底层,比如用C不用考虑汇编,汇编不用考虑逻辑门,逻辑门构建处理器不需要考虑晶体管
进程
- 程序计数器告诉我们程序当前正在执行哪条指令
- 一个操作系统对进程需要包括如下接口
- 创建
- 销毁
- 等待,比如等待进程停止
- 其它控制,比如暂停
- 获取状态
- 进程创建过程
- 将代码和初始化变量加载到内存中,现代操作系统使用惰性加载
- 为程序栈分配内存
- 为程序堆分内存
- 一些其他初始化任务,比如进程3个描述符
- 进程状态
- 运行
- 就绪
- 阻塞,比如当进程发起IO时,其他进程可以使用处理器,IO完成,进程再到就绪状态
- 进程最重要的API
- fork 创建一个进程,子进程会在fork出开始执行,fork之前的不执行
- wait 等待其他进程完毕
- exec 让子进程执行其他程序,而不是父进程的代码,这里有个非常重要的点,我们可以在fork之后,exec之前,做一些其他操作,比如执行之前,改变标准输出重定向到其它文件
受限直接执行
- 操作系统必须以高性能的方式虚拟化CPU,同时保持对系统的控制
- 直接执行,指的是直接在CPU上运行程序,但现在有两个问题
- 操作系统如何保证程序不做我们不希望他做的事
- 进程间如何切换
1.受限制的操作
硬件通过提供不同的执行模式来协助操作系统,在用户模式下,应用程序无法完全访问硬件资源,在内核模式下,操作系统可以访问机器的全部资源
如果用于希望执行某些特权操作,现在操作系统都提供了系