计算机操作系统学习笔记


资料链接:

百度云链接:https://pan.baidu.com/s/1h2aEk6A_DGpXkZvRtNmeUw 提取码:qoll

视频:https://www.bilibili.com/video/BV1d4411v7u7?p=1

博客笔记:https://blog.csdn.net/SakuraA6/article/details/108810916

计算机操作系统

1.CPU管理

image-20220425142343001

image-20220425142359278

操作系统的用户态,内核态。

中断是进入从用户态进入内核态的唯一方法。

image-20220424123718857

image-20220424124017147

2.多进程图像

进程:进行(执行)中的程序。

一个cpu,多个进程同时运行:并发。(一起出发,交替执行)

PCB:process control block

image-20220424214558777

多进程组织:PCB+状态+队列

image-20220425132248929

image-20220425132317802

线程管理的问题

线程切换后,对另一个线程的物理映射地址数据进行修改会导致出错?地址映射表

线程配合工作,如何组织秩序,保证对共享数据操作的正确性?共享缓冲区,进程同步

image-20220425135926056

image-20220425140133438

进程同步

给counter加锁。

3.用户级线程

进程:每个进程都有各自的资源和指令序列。

线程:操作的资源是一样的,指令序列不一样。

*线程切换:只需要切换PC指针,而不需要切换资源(PCB或上下文),比较快。

*指令切换:线程;指令切换+资源切换:进程。

cpu切换:cpu的运算速度要远快于处理io的速度。在处理io时,cpu可以转而去执行其它运算,提高cpu的利用率。

image-20220425144035578

image-20220425152239302

每个线程有自己的返回地址栈,用一个TCB数据结构来存储栈的地址。执行yield()后,需要从当前栈中弹出返回地址。esp是一个所有线程都能访问到的数据,esp=TCB2.esp完成了栈的切换。

用户级线程的核心:

每个线程有自己的栈,TCB。切换的时候首先切换TCB,再切换栈。

创建的时候将要切换的那个pc指针放到自己的栈中,然后再创建好TCB。将来在要切换的时候,首先通过TCB切换到相应的栈,然后从栈中弹出pc指针。

image-20220425154927952

create

image-20220425155518273

image-20220425160202620

image-20220425160227213

4.内核级线程

切换进程实质上就是切换内核级线程。

用户级线程切换是内核级线程切换的一部分。

对于用户级线程,对内核是不可见的。多核处理器要发挥作用,需要将多个用户级线程分配到不同的核心上进行处理,这涉及到核心级线程的切换。

用户级线程切换:切换TCB,然后根据TCB中的指针,切换到对应用户线程栈。

核心级线程切换:切换TCB,然后要切换一套栈,内核栈要切换,用户栈也要切换。

image-20220425181837340

image-20220425182346410

image-20220425183608972

image-20220425183648004

image-20220425183853798

image-20220425185008768

image-202204251851211955.内核级线程的实现

image-20220425191936315

image-20220425192629590

image-20220425194026058

image-20220425194953313

6.CPU策略的调度

image-20220426101058077

image-20220426101801935

CPU时间长度,|-----CPU区间-----|-------IO区间-------|,在一个线程执行过程中,cpu执行的时间和io操作的时间。

image-20220426104021557

image-20220426103933396

image-20220426104707694

设置优先级可以保证周转时间比较小。如短作业优先。线程整体满意度较高。但只有优先级,可能会导致线程饥饿,响应时间长。

时间片轮转可以保证响应时间,避免线程饥饿而得不到响应。但是只有时间片轮转又不能保证任务优先级。

折中解决方案:结合动态优先级和时间片轮转。

7.一个实际的schedule函数

image-20220426112947632

8.进程同步与信号量

Processes Synchronization and Semaphore

使进程间的合作变得合理有序。

image-20220426120859929

只有信号,不能决定是睡眠还是唤醒,如上面的无法判断当前有两个生产者进程。

信号量:可用资源的数量。

image-20220426122232502

image-20220426122701626

image-20220426130113986

9.信号量的临界区保护

用临界区保护信号量,用信号量保证进程同步。

对信号量的共同修改会出现问题。

image-20220426153503166

image-20220426163122838

image-20220426164426595

image-20220426165202799

一共涉及三个变量,flag0,flag1,turn。turn要么为0要么为1,两个flag即使同时为true,也只有一个能进入。并且也无法形成两个同时处于等待的状态

image-20220426170643695

关中断

image-20220426172932509

10.死锁

image-20220426192423794

image-20220426192344197

image-20220426194201369

image-20220426194345062

image-20220426195515123

image-20220426195818830

image-20220426200534431

11.内存使用与分段

image-20220426215212085

基地址放在PCB中。cpu取址操作过程中要进行地址翻译。

image-20220427103221722

image-20220427103919961

每个进程的PCB表都需要记录这样一个段表, 就是LDT。(Local Descriptor Table)

操作系统进程的段表就叫做GDT表。(Global Descriptor Table)

image-20220427105502349

PCB中记录着LDT表(各个段的基址)。

12.内存分区与分页

程序分段,内存分页。

磁盘 —> 内存 —> CPU

编译后的程序,多个段 —> 加载到内存 —> 执行

.C —> 进程LDT, PCB —> PC, IR, LDTR

image-20220427165311548

出现任务:

1.维护已分配分区表和空闲分区表

2.空闲分区的分配选择算法

image-20220427165821076

image-20220427170228257

image-20220427171254842

image-20220427173724185

用程序中的段内偏移地址计算得到页号和页内偏移地址。

根据页号找到物理页框号。

页框号就是段基地址,加上页内偏移量,得到物理地址。

13.多级页表和快表

image-20220427204244633

image-20220427204008066

image-20220427195317254

image-20220427195355974

最近使用的放在了快表中,提高时间效率。快表在CPU的寄存器中,速度非常快,一定程度上弥补了多级页表访存次数增加的缺点。但是TLB成本很贵。

image-20220427201033368

14.段页结合的实际内存管理

image-20220427212451131

image-20220428101551549

image-20220428102841814

两次地址翻译:cs, ip 翻译到虚拟内存,虚拟内存再经过多级页表翻译到物理页号和偏移地址。

image-20220428104313171

15.请求调页内存换入

image-20220428113248295

内存换入:磁盘到内存

内存换出:内存到磁盘

image-20220428113655355

16.内存换出

image-20220428130751528

image-20220428130927527

image-20220428131113757

image-20220428132811511

image-20220428132930593

image-20220428133624262

image-20220428133822546

image-20220428134603833

17.I/O与显示器

PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,

image-20220428140058859

image-20220428140244555

image-20220428152456729

image-20220428152601330

image-20220428152744065

操作系统将所有外设都做成文件。

操作系统操作外设的三个部分:

通过out指令发命令,通过文件形成统一的文件视图,进行中断处理。

1.根据设备描述文件中的inode信息,决定了cpu应该走哪条路进行输出。

2.将一个out指令,层层向上封装,用文件封装起来。

3.进行中断处理。

18.键盘

image-20220428154619875

image-20220428154846069

在处理键盘扫描码为F12时,将*写入到缓冲队列。

19.生磁盘的使用

让磁盘工作起来 --> 熟磁盘(有文件系统)

image-20220428163801362

image-20220428164052165

image-20220428164106997

image-20220428165909830

柱面:一个磁道从上到下形成的一个柱面。

磁头:盘面。

扇区:一个盘面从内到外的磁道中含有的扇区数量看作是一样的。(Sections)

image-20220428170022608

image-20220428190035540

第一层抽象:根据盘块号访问磁盘。block --> cyl, s, h

image-20220428212333593

image-20220428213517014

第二层抽象:电梯算法。

image-20220428221053123

20.从磁盘到文件

比起用盘块号来使用磁盘;用文件来使用刷盘更符合用户常识和习惯。

image-20220429103715988

用户对文件字符流进行增删改;由文件系统完成字符流到磁盘盘快集合的映射。

image-20220429120110967

image-20220429120158116

image-20220429120813632

image-20220429121121036

21.文件使用磁盘的实现

image-20220429123746192

image-20220429123805853

image-20220429124336020

22.目录与文件系统

一个磁盘从一台电脑换到另一台电脑,操作系统都能够以相同的方式将磁盘中的文件呈现给用户。那么磁盘需要对存储在其中的数据进行一定的组织管理。

image-20220429124852576

image-20220429130242982

image-20220429131632566

image-20220429131713812

image-20220429132050419

引导块:mount 挂载。

image-20220429132356559

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值