OS 杂七杂八

为了准备期末的操作系统考试,在此记录一些笔记。

1.计算机系统和操作系统

计算机系统由2部分组成:1.计算机硬件(CPU,存储器等)2.计算机软件(指令集合等)。

而操作系统是计算机硬件和其他软件以及计算机用户之间的关系纽带。

2.磁盘访问时间Ta=寻道时间Ts+旋转延迟时间Tr+传输时间Tt

3.进程是拥有资源的基本单元,线程是调度和执行的基本单元

4.进程通信方式

https://www.cnblogs.com/LUO77/p/5816326.html

5.计算机总线

计算机总线包括:数据总线(双向),地址总线(单向),控制总线(总体双向,单根线来说是单向的)

6.设备独立性

7.孤儿进程

在操作系统领域中,孤儿进程指的是在其父进程执行完成或被终止后仍继续运行的一类进程。这些孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。所以父进程结束,子进程不一定结束。

8.coffman条件,1.互斥条件 2.占有且等待条件2.不可剥夺条件4.循环等待条件。这些是产生死锁的必要条件。所以满足这些条件不一定产生死锁。

9.系统进入不安全状态后不一定会发生死锁。

10.文件控制块(FCB),文件由文件体和文件控制块组成。文件体包含的是文件本身的内容,文件控制块是用于描述和控制文件的数据结构,保存系统管理文件所需要的全部属性信息。

11.索引节点(i节点),在检索目录时实际上只用了文件控制块的文件名。所以有些文件系统把文件控制块的文件名属性和其他描述信息分开,其他描述信息单独形成了一个数据结构,称为索引节点。

12.目录项,接11,目录项由文件名和指向文件i节点的指针组成。(还需继续补充)

13.页式存储管理系统中,逻辑地址到物理地址的转换是在进程执行过程中,由硬件地址变换机构借助于页表自动进行的

14.内部碎片和外部碎片

在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。

15.用户态

16.系统调用

内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序

用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取

17.系统调用

系统调用是一种用户在程序一级请求操作系统内核完成某种功能服务的过程调用,每一个系统调用都是完成某种特定内核功能的一个函数,比如read,printf()。

18. 单道,多道批处理系统

19.响应时间

请求发起到-CPU开始执行 的时间。

20.malloc函数是库函数,不是系统调用。因为malloc函数中封装了动态分配内存,还实现了其他功能。

21.动态重定位,静态重定位

一段代码,静态重定位是将全部代码存储到内存,完成相应的地址转换。

至于动态重定位,程序原封不动地装入内存,CPU执行这段程序时,再和基址寄存器相加得到目标地址。需要硬件支持。

参考这篇博客:https://blog.csdn.net/hejingyuan6/article/details/24125265

22.并发和并行

百度百科解释:https://baike.baidu.com/item/%E5%B9%B6%E5%8F%91/11024806?fr=aladdin

并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。

并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

23.中断执行流程

24.linux虚拟地址空间管理,以32位系统为例,在32位系统中虚拟地址空间可以达到2^32B=4GB,整个虚拟地址空间按照3:1的人比例划分,用户进程占用其中的3GB(0x00000000----0xBFFFFFFF),1GB(0xC0000000---0xFFFFFFFF)。无论当前执行的是哪个程序,虚拟地址空间的内核空间部分总是相同的、共享的,当时用户进程不能访问内核部分空间,也不能访问其他用户进程的虚拟地址空间。

.linux具体的虚拟地址空间管理可以参考这篇博客:https://www.cnblogs.com/smartjourneys/p/7196868.html

25.I/O层次

参考这篇博客:https://www.cnblogs.com/yangyuliufeng/p/9328087.html

26.

内存分配方式有三种:
  (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

  (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

  (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多

27.文件类型总结

28.伙伴算法的性能分析

    优点:时间效率高,同时能够尽量保证有足够的连续空间。

     缺点:空间利用率不高,用空间换时间。

29.内存紧缩:将空闲分区合并,需要移动 1个段(复制内容)。内存紧缩需要花费大量时间,如 果复制速度1M/1秒,则1G内存 的紧缩时间为1000秒≈17分钟。

30.页表的思想 和 文件系统的随意块 有一些区别

31.
  页表项(页描述子)中各个位的作用:

链接:https://www.nowcoder.com/questionTerminal/362aebddf7c74088851a6853b4c429b0

    1. 页号

    2. 块号(页框号)

    3. 中断位: 用于判断该页是不是在内存中,如果是0,表示该页面不在内存中,会引起一个缺页中断

    4. 保护位(存取控制位):用于指出该页允许什么类型的访问,如果用一位来标识的话:1表示只读,0表示读写

    5. 修改位(脏位):用于页面的换出,如果某个页面被修改过(即为脏),在淘汰该页时,必须将其写回磁盘,反之,可以直接丢弃该页

    6. 访问位:不论是读还是写(get or set),系统都会设置该页的访问位,它的值用来帮助操作系统在发生缺页中断时选择要被淘汰的页,即用于页面置换

    7. 高速缓存禁止位(辅存地址位):对于那些映射到设备寄存器而不是常规内存的页面有用,假设操作系统正在循环等待某个I/O设备对其指令进行响应,保证硬件不断的从设备中读取数据而不是访问一个旧的高速缓存中的副本是非常重要的。即用于页面调入。

32.单缓冲和双缓冲的原理

https://blog.csdn.net/a649339266/article/details/77836813

33.页表项默认大小4B

34.中断的分类 中断的优先级

35.在单CPU系统中,任一时刻都有1个进程处于运行状态(×)

在全部进程死锁的时候,没有进程处于运行状态。

猜你喜欢

转载自blog.csdn.net/springtostring/article/details/84931675