OS
文章平均质量分 65
操作系统
月夜留香
这个作者很懒,什么都没留下…
展开
-
OS学习(四)——进程调度
A和B都需要50s的CPU时间,但A每运行10ms就发出I/O请求,假设每个I/O请求需要10ms,B不发出I/O请求。当工作发出I/O请求时,当前运行的程序会被阻塞,不使用CPU。时间片太长,响应时间不好。它抢占式地调度程序,即抢占一个工作,运行另一个工作。P1:24+36+30+12+1(切换)+1(切换)+1(调度)=105s。P3:18+24+36+1(进程切换)+1(进程调度)=80s。简单说来,就是不是一直做一个工作,A工作一会后B工作。A在0s到达,B和C在10s到达。到达顺序:A,B,C。原创 2024-03-15 10:46:17 · 346 阅读 · 1 评论 -
OS学习(六)——进程调度(彩票机制)
初始行程值ABC均为0,假设选择A首先运行,行程值(A)=0+100=100。之后在BC(它们行程值最小)选择,假设选择了B,行程值(B)=0+200=200。A和B各有100张彩票,A有两个工作,B只有一个工作。当需要进行调度时,选择目前拥有最小行程值的进程,并且在运行之后将该进程的行程值增加一个步长。eg.A,B,C的票数分别为100,50,250。系统分配时,根据A:B=1:1来进行分配,给A的两个工作各全局货币50张,B100张。上图可知,A运行2次,B运行1次,C运行5次,正好是票数的比例。原创 2024-03-22 10:51:30 · 346 阅读 · 1 评论 -
OS学习(三)——进程运行机制
程序可以执行特殊的陷阱(trap)命令,顾名思义,跳入内核并将级别提升。完成后,OS调用一个特殊的从陷阱返回的指令(return-from-trap),回到用户模式。即为当前正在执行的进程保存一些寄存器的值(到内核栈),并为即将执行的进程恢复一些寄存器的值。过程:OS在进程列表中创建一个进程条目,为其分配内存,将程序代码从磁盘加载到内存中,找到入口点(main()函数或类似的),跳转并运行。被OS显示保存在进程结构的内存中,这一操作让系统好像刚由A陷入内核变为好像刚由B陷入内核。由硬件隐式保存在内核栈;原创 2024-03-15 08:15:38 · 367 阅读 · 1 评论 -
OS学习(八)——内存虚拟化
操作系统在单一的物理内存为多个运行的进程(所有进程共享内存)构建一个私有的,很大的地址空间的抽象。早期系统(举例,操作系统不一定从物理地址0开始)原创 2024-03-31 11:01:10 · 294 阅读 · 1 评论 -
OS学习(二)——API&进程
应用程序编程接口(英语:Application Programming Interface,简称:API),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。子进程创建(fork)完成后,shell在exec()之前关闭标准输出,打开文件newfile,wc的输出结果发送到newfile上,而不是在屏幕中打印出来。当fork()成功调用后,子进程的rc=0,父进程的rc>0。创建新进程,新进程为子进程,原来进程为父进程。原创 2024-03-08 11:10:37 · 329 阅读 · 0 评论 -
OS学习(五)——MLFQ
2.愚弄调度程序(game the scheduler):进程在时间片快用完时调用I/O,保持在高优先级,占用更多的CPU时间。3.一个程序在不同时间表现不同,计算密集的进程在另一个时间可能表现为交互型,用当前的方法,它不会享受交互型的待遇。1.饥饿(starvation)问题:若存在太多的交互型工作,长工作就永远无法得到CPU,被“饿死”了。交互型工作(灰色)在CPU密集工作一段时间后进入,连续运行完两个时间片后结束,继续运行黑色工作。占用CPU时间长,响应时间不重要的长时间计算密集型工作。原创 2024-03-18 16:24:49 · 357 阅读 · 0 评论 -
OS学习(七)——多处理器调度
进程在一个CPU上运行时会在其缓存维护许多状态,从而保证下次在同一CPU运行时更快,然而,在不同CPU上运行需要重新加载数据而很慢。此问题讲的就是多个CPU共享一个内存,但缓存不共享,可能导致CPU1修改内存中的值暂存于缓存1中,而CPU2没有及时更新的情况。工作窃取(work stealing):工作量较少的队列不定时”偷看“其他队列是不是工作比自己多,如果是,就“窃取”工作。多队列调度时,可能一个CPU上的工作都执行完了,其他CPU还一个都没完成,导致不同CPU负载不均衡。CFS是确定的比例调度方法。原创 2024-03-26 15:43:34 · 281 阅读 · 0 评论 -
OS学习(九)——空闲空间管理
空闲列表(在堆上管理空闲空间的数据结构,不一定真是列表)包含一组元素,记录堆中的空闲空间,例如:此时空闲列表会有两个元素,一个记录0~9字节,另一个记录20~29字节。若申请一个字节的内存,分配程序会执行操作:找到一块可满足请求的空间,将其分割,第一块给用户,另一块留在空闲列表中。若申请超过10字节的空间会咋样?分配程序会在释放内存时合并可用空间,注意是的。原创 2024-04-02 10:12:52 · 1321 阅读 · 1 评论 -
OS学习(一)——初识进程
这张表格中,Process0即使I/O完成也没有开始运行,而是等到Process1运行结束后才开始。资源管理器:让许多程序同时访问自己的指令和数据,让许多程序访问设备。操作系统将代码和静态数据load到内存中,加载到进程的地址空间。虚拟化CPU:让一个进程只运行一个时间片,然后切换到其他进程。为栈(stack)分配内存,存放局部变量,函数参数和返回地址。阻塞:常见例子,当进程向磁盘发出I/O请求时,它会被阻塞。将CPU的控制权转移到新创建的进程中,程序开始执行。进程:操作系统为正在运行的程序提供的抽象。原创 2024-03-08 09:31:49 · 390 阅读 · 1 评论