30 操作系统
操作系统是运行在计算机上的软件程序,用来管理计算机硬件和软件资源。
操作系统内核负责
- 系统内存管理
- 硬件设备管理
- 文件系统管理
- 应用程序管理
文章图片
- 用户态:读取用户程序的数据
- 系统态:访问计算机的资源
运行程序基本是在用户态,需要访问以下资源时,需要通过系统调用的方式,向操作系统提出服务请求,由操作系统代为完成。 - 设备管理:完成设备的请求、释放、启动等
- 文件管理:完成文件的读、写、创建、删除等
- 进程控制:完成进程的创建、撤销、阻塞、唤醒等
- 进程通信:完成进程之间的消息传递或信号传递等
- 内存管理:完成内存的分配、回收以及获取作业占用内存区大小及地址等
各进程相互独立,各线程可能相互影响。
进程间的通信方式
- 管道/匿名管道:用于具有亲缘关系的父子进程间或者兄弟进程之间的通信。只存在于内存中。
- 有名管道:遵循先进先出,以磁盘文件的形式存在,实现本机任意两个进程通信。
- 信号:用于通知进程某个事件已经发生。
- 消息队列:消息的链表,存放在内核中,由消息队列标识符标识。要先进先出的消费,但可以随机查询。只有内核重启(即操作系统重启)或者显式删除一个消息队列时才会被删除。和消息队列相比,信号承载的信息量少,管道只能承载无格式字节流且缓冲区大小受限。
- 信号量:是个计数器,用于多进程对共享数据的访问,意图在于进程间同步。
- 内存共享:使多进程同时访问同一块内存空间,需要依靠某种同步操作,例如互斥锁或信号量。
- 套接字:用于在客户端和服务器之间通过网络通信,套接字是支持tcp/IP的网络通信的基本操作单元。
- 互斥量:持有“互斥量(就是锁)”的线程才有访问公共资源的权限。
- 信号量:允许同一时刻多个线程访问统一资源,但是需要控制最大线程数量。
- 事件:wait/notify 通过通知保证多线程同步
- 先到先服务算法FCFS:从就绪队列中选第一个进程,立即执行移植到被阻塞放弃占用cpu。
- 短作业优先算法SJF:从就绪队列中选执行时间最短的进程,立即执行直到被阻塞放弃占用cpu。
- 时间片轮转调度算法:每个进程轮流执行一个时间片
- 多级反馈队列调度算法:高优先级和短时间的优先完成。unix系统使用这种算法。
- 优先级调度:根据内存要求、时间要求或其他资源要求制定优先级,按照优先级执行。
地址转换:将逻辑地址转换成物理地址
内存管理机制
- 连续分配管理方式
- 块式管理
- 非连续分配管理方式
- 页式管理
- 段式管理
- 段页式管理
- 虚拟地址到物理地址的转换要快
- 解决虚拟地址空间大,页面也会很大的问题
快表
【30 操作系统】页表的缓存。
多级页表
像树一样,一级页表映射二级页表地址,二级页表映射物理地址。
为了节省页表占用的内存空间,未被真实占用的二级页表可以暂不创建。
或把二级页表放在磁盘里。
- 共同点:都是为了提高内存利用率,减少内存碎片。都是离散存储的,页内、段内都是连续的。
- 区别:页大小固定,由操作系统决定,段大小不固定,取决于当前运行的程序。段式逻辑单位,分为代码段、数据段等。
- 为什么要有虚拟地址:直接访问物理地址会有意无意的造成操作系统和程序崩溃
- 使用虚拟内存的好处:可以使用相邻的虚拟地址访问物理内存中不相邻的大内存缓冲区,第二条没看懂,不同进程使用的虚拟地址彼此隔离,一个进程无法修改由另一进程或操作系统使用的物理内存。
局部性原理
- 时间局部性:因为程序中存在着大量循环操作。某条指令一旦执行,不久后可能再次执行;某数据被访问过,不久之后可能再次被访问。
- 空间局部性:因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚存储的。一旦程序访问了某个单元,不久以后其附近的存储单元也将被访问。
局部性原理使得只需要装入部分程序到内存就可以开始运行。
- 请求分页存储管理,基于“分页管理”+按需置换“页”进内存。
- 请求分段存储管理,基于“分段管理”+按需置换“段”进内存
- 请求段页式存储管理
- 缺页中断:需要访问的页不再主存,需要操作系统将其调入主存后访问。
如果此时主存已满,就需要删除一个页面,删除页面的规则就是页面置换算法。 - opt页面置换算法:选择“以后将永不使用”的页面,过于理想无法实现,成为衡量其他算法的标准。
- fifo置换算法,先进先出。
- lru置换算法,least currently used,最近没被使用过的先出
- lfu置换算法,least frequently used,最少使用的先出。
推荐阅读
- 热闹中的孤独
- 我要做大厨
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 爱就是希望你好好活着
- 太平之莲
- 知识
- 叙述作文
- 时间老了
- 清明,是追思、是传承、是感恩。
- 我错了,余生不再打扰