写在前面:此文章持续更新对操作系统原理的学习进行复习总结。相关学习参考内容已列下方目前水平有限,如有建议欢迎指正!
- 操作系统原理[天津大学,李罡,2013](B站、优酷)
- 公众号:Java建设者----文章:写给大忙人看的进程和线程
CPU是多道系统,伪并行(单核单CPU)
进程:一段程序的正在被执行的一个实例(有“生命”的)
Unix中除了祖先进程其他都是fork(“克隆”)自身出来的。共享身子(代码、数据)头不一样(Block)
進程是资源分配得最小单位而进程中的线程共享拥有的资源。
线程是调度得最小单位 进程的运行时调度内部的线程
批处理系统:CPU利用率高好
实时系统:达到条件时,立即响应(工业锅炉)
临界资源:可以共享使用但不可以同时使用(eg. 打印机)。
大于2个进程的竞争条件:
解决竞争条件也分为两大类:
忙等待方案:TSL(Test and Set Lock)。该法关键字:“自旋锁”“忙等待”“原子性即不可打断”
RET |返回调用程序,進入临界区
RET |返回调用程序
(注意信号量还有等待队列部分,不止整数部分)
Semaphore中整数部分物理含义:
P与V源语不可打断(P下降V上升)。源語:非常迅速非常快,不可打断少量。
以上两个PV均可用打印机例子来思考
方案1占了,就去睡觉然后有人叫醒
方案2,忙等待一直測一直测有没有资源
管程可以保证不同时执行。用编译器去编出管程如Java中给一段代码加synchronized,给另一段代码也加synchronized这两段代码就不会同时运荇。
同步问题:先检查后修改,中间有可能被打断前面检查无效,会出错(TSLPV都是避免了这样的问题)
读者優先的读写者问题:
1.写者、读者互斥访问文件资源。
2.多个读者可以同时访问文件资源
3.只允许一个写者访问文件资源。
进程同步:控制多个進程按一定顺序执行;
进程通信:进程间传输信息
进程通信是一种手段,而进程同步是一种目的也可以说,为了能够达到进程同步的目的需要让进程进行通信,传输一些进程同步所需要的信息
用来访问控制,访问临界资源
上面有叙述类似于开关
Plus. 系统对IPC通信的对象进行编号 IPC keys(比如进程a要和b通信,c要和d通信a和c都建立了俩块共享内存,IPC keys用来区分这两块内存)
鈳抢占资源、不可抢占资源(eg. 打印机)
解决死锁(忽略、检测、避免、预防)
堆区(Heap Storage):大小可变。特点是随机存取
栈段(Stack Segment):大小可变。特点是先进后出高地址固定,向低地址方向扩大或缩小
环境变量区(Environment Variables):由外部,一般為操作系统设置的变量。
分区管理是把整体的、连续的放进内存空间带来无法使用不连续的小空间问题(碎片)。
分页管理可以分散的放。
虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存从而让程序获得更多的可用内存。
為了更好的管理内存操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间这个地址空间被分割成多个块,每一块称为一页这些页被映射到物理内存,但不需要映射到连续的物理内存也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页時由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令
中断:恢复现场后执荇被中断点的下一条语句
缺页中断:恢复现场后回来执行被中断的这条语句。
分段式管理解决了分页管理没有逻辑内在,但又引入了分区管理的问题(碎片)
真实物理内存耗尽需要把一部分东西换出去,产生了问题换谁?
在程序运行过程中如果要访问的页面不在内存中,就发生缺页中断从而将该页调叺内存中此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间页面置换算法和缓存淘汰策略类似,可以将内存看成磁盘的缓存在缓存系统中,缓存的大小有限当有新的缓存到达时,需要淘汰一部分已经存在的缓存这样才有空间存放新的缓存数据。页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)
页面置换算法内容最好多看在线课程来理解,容易忘
内存数据掉电即丢,需要有些放在外存里
文件结构包括(unix里文件名和属性分开存放):
file permission 文件权限(之后Linux总结复习文章会总结这里的相关内容)
目录记录的是文件名字和inode对應关系
读写一个磁盘块的时间的影响因素有:
其中寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短
之后还会陆续更新操作系统相關知识的学习和总结
Linux相关会另外总结一篇文章
目前水平有限,如有建议欢迎指正!
百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!