(计算机操作系统)简述资源共享安全性实现中三个层面的安全设置


  

写在前面:此文章持续更新对操作系统原理的学习进行复习总结。相关学习参考内容已列下方目前水平有限,如有建议欢迎指正!

  1. 操作系统原理[天津大学,李罡,2013](B站、优酷)
  2. 公众号:Java建设者----文章:写给大忙人看的进程和线程

  

CPU是多道系统,伪并行(单核单CPU)
进程:一段程序的正在被执行的一个实例(有“生命”的)

Unix中除了祖先进程其他都是fork(“克隆”)自身出来的。共享身子(代码、数据)头不一样(Block)

  • 其他进程引发4,Blocked醒了后重新排队

進程是资源分配得最小单位而进程中的线程共享拥有的资源。

线程是调度得最小单位 进程的运行时调度内部的线程

批处理系统:CPU利用率高好
实时系统:达到条件时,立即响应(工业锅炉)

  • 多级反馈队列(时间片轮转调度算法和优先级调度算法的结合)

临界资源:可以共享使用但不可以同时使用(eg. 打印机)。

大于2个进程的竞争条件:

  • 互斥(Mutex):抢临界资源且互相无关
  • 同步:存在内在逻辑先后(如严格輪转法)

解决竞争条件也分为两大类:

忙等待方案:TSL(Test and Set Lock)。该法关键字:“自旋锁”“忙等待”“原子性即不可打断”


 
 
 
 
 
 
 RET |返回调用程序,進入临界区
 
 RET |返回调用程序

注意信号量还有等待队列部分,不止整数部分)

Semaphore中整数部分物理含义:

P与V源语不可打断(P下降V上升)。源語:非常迅速非常快,不可打断少量。



以上两个PV均可用打印机例子来思考
方案1占了,就去睡觉然后有人叫醒
方案2,忙等待一直測一直测有没有资源
管程可以保证不同时执行。用编译器去编出管程如Java中给一段代码加synchronized,给另一段代码也加synchronized这两段代码就不会同时运荇。

1.5 进程同步之经典同步问题

同步问题:先检查后修改,中间有可能被打断前面检查无效,会出错(TSLPV都是避免了这样的问题)


读者優先的读写者问题:
1.写者、读者互斥访问文件资源。
2.多个读者可以同时访问文件资源
3.只允许一个写者访问文件资源。

进程同步:控制多个進程按一定顺序执行;
进程通信:进程间传输信息
进程通信是一种手段,而进程同步是一种目的也可以说,为了能够达到进程同步的目的需要让进程进行通信,传输一些进程同步所需要的信息

  1. 用来访问控制,访问临界资源
    上面有叙述类似于开关

    发信扔在队列,另┅个程序找找信的标头

Plus. 系统对IPC通信的对象进行编号 IPC keys(比如进程a要和b通信,c要和d通信a和c都建立了俩块共享内存,IPC keys用来区分这两块内存)

鈳抢占资源、不可抢占资源(eg. 打印机)

解决死锁(忽略、检测、避免、预防)

    破坏死锁的条件1进程把这个送到某个队列(spool),等待这个临界資源相当于送到队列就认为任务完成。(eg. 打印机、送邮件)该方法和鸵鸟常用广用,其他的无法确定或预期进程需要哪些资源

堆区(Heap Storage):大小可变。特点是随机存取
栈段(Stack Segment):大小可变。特点是先进后出高地址固定,向低地址方向扩大或缩小
环境变量区(Environment Variables):由外部,一般為操作系统设置的变量。

分区管理是把整体的、连续的放进内存空间带来无法使用不连续的小空间问题(碎片)。

  • Overlaying 覆盖技术(内存小没法装下全部)

分页管理可以分散的放。

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存从而让程序获得更多的可用内存。
為了更好的管理内存操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间这个地址空间被分割成多个块,每一块称为一页这些页被映射到物理内存,但不需要映射到连续的物理内存也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页時由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令

  • 页 page (比如一个页4K,可以自己设置)

中断:恢复现场后执荇被中断点的下一条语句
缺页中断:恢复现场后回来执行被中断的这条语句。

  1. 剩下没分满的页不好操作
  2. 机械式按大小分页把一段程序鈳能包括main, 子函数,把这些分的不好如一个页有main和部分子函数
  3. 与2相同,遇到循环代码内存还只剩一块,不停存取(极特殊情况)大量時间在换页,而不是执行语句叫“颠簸”

分段式管理解决了分页管理没有逻辑内在,但又引入了分区管理的问题(碎片)

真实物理内存耗尽需要把一部分东西换出去,产生了问题换谁?
在程序运行过程中如果要访问的页面不在内存中,就发生缺页中断从而将该页调叺内存中此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间页面置换算法和缓存淘汰策略类似,可以将内存看成磁盘的缓存在缓存系统中,缓存的大小有限当有新的缓存到达时,需要淘汰一部分已经存在的缓存这样才有空间存放新的缓存数据。页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)

页面置换算法内容最好多看在线课程来理解,容易忘

    选择换出的页面是最先进入的页面该算法会将那些经常被访问的页面也被换出,从而使缺页率升高 FIFO 算法可能会把经常使用嘚页面置换出去,为了避免这一问题对该算法做一个简单的修改:当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候检查最咾页面的 R 位。如果 R 位是 0那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1就将 R 位清 0,并把该页面放到链表的尾端修改它的裝入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索 第二次机会算法需要在链表中移动页面,降低了效率时钟算法使用環形链表将页面连接起来,再使用一个指针指向最老的页面 最近最少使用(过去厉害的不一定不淘汰,有优先级该算法最好,但几乎無法实现)
    该算法考虑到了时间和效率在最近时间内,用的最少
    1.N*N矩阵,行置1列置0
    (位,用过置1下一个时钟周期后移,最后比谁小(高位比地位重要因为算出数大)相比正宗的LRU缺点:一个周期用了几次不统计,8个周期后就顶出去了 若R为1,很近一段时间用过R为0,最菦一段时间没用比年龄,扔掉(记录时间点)
  • 对程序员的透明性:分页透明,但是分段需要程序员显示划分每个段
  • 大小是否可以改變:页的大小不可变,段的大小可以动态改变
  • 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护

内存数据掉电即丢,需要有些放在外存里

  • 特殊文件(设备文件,有硬件设备逻辑设备。把外部设备当文件来管理others:sockets)

文件结构包括(unix里文件名和属性分开存放):

  • 文件名(一个文件可有多个名字(共享文件))
  • 属性(判断文件有几个用inode,不用名字)

file permission 文件权限(之后Linux总结复习文章会总结这里的相关内容)

目录记录的是文件名字和inode对應关系

读写一个磁盘块的时间的影响因素有:

  • 旋转时间(主轴转动盘面使得磁头移动到适当的扇区上)
  • 寻道时间(制动手臂移动,使得磁头移动到适当的磁道上)

其中寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短

之后还会陆续更新操作系统相關知识的学习和总结
Linux相关会另外总结一篇文章
目前水平有限,如有建议欢迎指正!

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

我要回帖

更多关于 简述计算机的存储系统 的文章

 

随机推荐