![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解操作系统
weixin_41186611
这个作者很懒,什么都没留下…
展开
-
深入理解操作系统——同步互斥详解
临界区指的就是那些共享资源,在程序中表现为进程中访问临界资源的一段需要互斥执行的代码,意思是同一时刻只能有一个进程进入临界区执行。在临界区执行前有进入区,对来访的进程进行筛选,检查其是否可以进入临界区,获得进入临界区资格的进程执行完临界区代码之后有退出区,在这此进程要让其他等待的进程知道临界区已经空了,它们可以再次进入进入区去获得执行临界区代码的机会。基于软件的同步解决办法线程可以通过共享一些共有变量和标志变量来同步它们的行为,一线程进入临界区之前同时判断此线程的共享变量值,判断通过后才会进入。...原创 2022-07-31 16:49:00 · 436 阅读 · 0 评论 -
深入理解操作系统——cpu处理机调度详解
无论当前执行的进程执行时间长度大于时间片长度或短于时间片长度,等到时间片时间结束时候,就会切换到下一进程执行,未执行完的进程继续等待排队。另外当计算机中有多个处理机的时候,每个处理机的调度算法可不相同,但要注意共享资源的访问要进行同步,进程分在哪个处理机上执行有静态和动态两种分配方式。处理机资源的使用模式是在时间片机制下,当当前时间片运行结束后,或者cpu在时间片未执行完之前被抢占时,这时候cpu得去决定去就绪队列里挑选下一个要执行的进程。将就绪队列划分为多个独立的子队列,分别有各自的调度算法。...原创 2022-07-31 16:45:45 · 410 阅读 · 0 评论 -
深入理解操作系统——进程控制详解
进程创建在unix系统中的系统调用指令是fork()和exec(),fork()进行把一个进程复制成两个进程,复制父进程所有的变量和内存以及所有cpu寄存器,子进程的pid=0,exec()用新程序来重写当前进程。执行Fork()创建新进程复制父进程的所有信息,但是有些内存信息并不需要,反而增加了开销,所以有了一个轻量级的vfork()系统调用,此创建进程时,不再创建一个同样的内存映射。上下文指的是一些进程生命周期的信息,如寄存器状态,cpu状态,内存地址空间等,这些信息存在。...原创 2022-07-31 16:43:13 · 103 阅读 · 0 评论 -
深入理解操作系统——页面置换算法详解
页面置换算法是应用到发生缺页异常时操作系统该以什么样的机制去交换内存与外存的页面。其算法的设计目标是减少页面的调入调出次数。还有一类是全局页面置换算法,全局指的是置换页面的选择范围是所有可换出的物理页面,实现算法有工作集算法和缺页率算法。这一类共有三种算法最优算法、先进先出算法、最近最久未使用算法、时钟算法、最不常用算法。仅限于当前进程(意味着在置换的过程中每个进程分配的页面总数不会变化)一类是局部页面置换算法,局部就是置换页面的选择范围。...原创 2022-07-31 16:40:34 · 532 阅读 · 0 评论 -
深入理解操作系统——虚拟存储详解
因为程序的大小在不断的变大,内存的增长速度远远跟不上程序增大的速度,所以内存需要外存的配合来完成对程序的运行存储。虚拟存储是非连续内存分配的延续,后者是在内存里的存储空间让它不连续,前者是在后者的基础上将一部分内容放在外存中的做法,可以让应用程序有更大的空间可以使用。虚拟存储就是只把部分程序放入内存中,从而运行比物理内存大的程序,它的前提思想是局部性原理。交换技术覆盖是一个程序的内存空间不够,交换是一个程序够用,但由于多道程序的运行,使得另一个程序占用了内存空间,使得之前的空间不够。...原创 2022-07-31 16:38:47 · 1229 阅读 · 0 评论 -
深入理解操作系统——非连续内存分配方式详解
上面存储管理里说的动态分配策略都是存储在连续的物理内存中,这有几个缺点分配给程序的物理内存必须连续,存在内存碎片,内存利用率低等缺点,所以为了提高内存利用率和管理的灵活性,就需要提出非连续内存分配的办法,最终能给达到使得一个程序可以使用非连续的物理地址空间,共享代码和数据,支持动态加载和动态链接。一个进程有不同的块组成,如代码段,堆栈段等,这些在进程的逻辑地址空间上是连续存储的,使用段式和页式存储管理的方式实现其在物理地址空间上的非连续存储。在逻辑地址空间中,将空间分为大小相同的页面,简称为“页”。...原创 2022-07-31 16:36:32 · 212 阅读 · 0 评论 -
深入理解操作系统——存储管理详解
操作系统需要对这么多的存储设备进行管理,计算机运行的每个进程在内存中都有独立的内存空间,它们也只能访问自己的内存空间,其物理地址是不一样的,并且每个进程的逻辑结构不是必须连在一起的,是分段的,分成了数据,代码,堆栈等,还有一种管理方式就是将内存分页,把内存分为最基本的单位,然后选取一个合适的大小作为一页。每一个进程运行时,都会给其分配一块不小于指定大小的连续的物理内存区域,给一个进程分配内存采用的是动态分配分配策略,是指其指定大小是可变的分区,且分区的地址是连续的。...原创 2022-07-31 16:32:58 · 283 阅读 · 0 评论