操作系统 --- 哈工大孙志岗70讲总结(视频1-12)

看了B站上的孙老师视频,感觉太啰嗦了看完进程的看不下去了,这里给出个人总结。

1.1 推荐书籍 :
操作系统概念pdf
现代操作系统pdf
 
2.2操作系统有哪些
IOS
MacOS
Linux
Andriod
Unix
VxWorks --- 航天航空军事领域,嵌入式
FreeBSD --- 服务器,稳定
DOS --- 只能操作一个程序
 
操作系统特点:管理硬件资源
 
5.5
 
 
INT(汇编指令:中断):中断后进入中断服务程序(一定是操作系统编写的)
 
系统调用:应用程序执行INT指令,跳到中断服务程序(内核)
当应用程序调用open()时,转换为汇编就是INT,然后传入 系统调用编号(要调用哪个系统调用)
中断服务程序检查系统调用编号,找到程序的位置。
 
strace -- 跟踪一个程序调用了那些系统调用
 
printf()调用了write()
 
问题:C语言中函数参数传递过程
往栈中一个个压入参数,然后一个个取出
 
问题:系统调用参数传递过程
类似
 
用户态的数据只能写入用户态的内存,内核态可以直接访问用户态的内存
用户态不能直接访问内核态的内存。
 
6.6
系统程序:
磁盘分区,磁盘快照,任务管理器,资源管理器(操作文件)
 
7.7
DOS:应用程序可以不经DOS操作系统使用硬件
Solaris操作系统:
 
8.8进程管理
汇编指令:
in指令 --- 直接操作硬件端口输入
out --- 直接操作硬件端口读入
这两个指令在用户态不允许执行
 
计算机boot过程:
 
执行BIOS程序(ROM中)
选择存储设备(硬盘还是U盘等等)
MBR放在硬盘的第一个扇区(1到512个字节)
将MBR加载到0x7c00然后执行
 
 
进程:(内存地址:0-max)
PC和其他寄存器
代码段(指令)
数据段(编译阶段决定了的数据,比如helloworld的字符串)
 
max最大可达4G
 
进程切换 --- PCB(Precess Control Blocking)进程控制块
 
1.进程切换之前将状态(寄存器等)存入PCB中
2.操作系统内核选择下一个调度的进程
3.加载下一个进程的PCB
 
就绪PCB队列
阻塞PCB队列
 
 
 
问题1 由运行态到就绪态:进程切换之前由程序使用CPU,系统内核如何获得执行权
使用中断(时钟中断,每隔一段时间发出中断,中断服务程序 -- 操作系统)
 
问题2 由运行态到等待态 :
由程序主动进入等待态,程序调用系统调用
 
问题:需要降低进程切换的开销
硬件方面:CPU设计完成:
1.一个指令完成现场保存,比一个个PUSH快得多
2.直接换一批寄存器组
 
12 进程的创建
子进程由父进程创建
1.子进程和父进程资源完全共享 --- 嵌入式系统
2.子进程共享父进程资源的一部分 --- Unix系统
3.子进程和父进程之间没有任何关系  --- Windows
 
a 父进程子进程同时运行
b 父进程等待子进程工作完再运行
 
          1)子进程内存空间克隆父进程内存空间 --- Linux
          2)子进程从硬盘加载程序 --- Windows
 
 
 fork()  ---- 执行到fork()操作系统会在这里复制父进程,返回0给子进程返回大于0给父进程

猜你喜欢

转载自www.cnblogs.com/coderlynn/p/8993467.html