1. 目的掌握操作系统知识,采用<<计算机4级用书操作系统原理>>,微信读书上面可找到,以后顺便考下4级操作系统原理的证书
  2. 招聘要求掌握操作系统知识,记录下来,以后跳槽使用
  3. 看完该文章,应去牛客网刷操作系统试题,只背不刷就是走弯路;

  1. 计算机系统包括硬件系统(工作实体)和软件系统(协调硬件工作 )。 系统资源包括硬软件资源(硬软件资源分成:中央处理器、存储器(内存和外存)、外部设备)

  2. 程序执行前,先申请内存后再装入内存

  3. 操作系统(并发性:单处理器,宏观同时推进,微观交替运行 ; 多处理器,宏观,微观都是并发运行 ; 共享性:互斥共享/同时共享:宏观同时共享,微观交替共享 ;功能是进程管理,存储管理,文件管理,设备管理)的任务:组织管理系统的硬软件资源(CPU;内存储器;外存储器;外部设备) ,向用户提供功能服务(提供程序设计接口,提供操作方法使用计算机),控制协调进程运行

  4. 虚机器:将操作系统的功能分成若干个层次,每一层次完成特定的功能

  5. 手工操作系统:硬连线组成计算机功能,采用机器语言,那时没有操作系统。

  6. 监控程序系统:监督程序自动处理作业,称为单道批处理。

  7. 多道批处理系统:多程序同时存在于内存,CPU切换执行

  8. 分时系统(Time Sharing System): 多用户使用多个终端向系统请求,系统时间片轮转处理请求,在各用户终端上显示结果。

  9. UNIX通用操作系统 :C编写,可移植,唯一能在笔记本/PC/工作站/巨型机上运行的操作系统

  10. 个人计算机操作系统:1984年苹果系统。 1991年Linux系统(继承了 UNIX的全部优点),1995年Windows 95系统

  11. Android操作系统:基于Linux内核,开源移动系统,面向移动设备

  12. 批处理操作系统(分为简单批处理系统/监控程序和多道批处理系统。):1.用户将作业交给系统操作员–> 2.收到一定量作业后,组成一批作业发到计算机中 --> 3.系统操作员启动系统,系统自动执行每个作业(作业控制语言编写作业控制说明书,它告诉系统作业运行步骤,它放在作业前面)。–> 4.最后操作员将作业结果交给用户。 当系统调用时,处理器被中断变成管态,控制流程转移到监控程序的特定的位置执行代码。执行结束后,监控程序恢复现场,切换到目态;流程控制转移回原用户程序。

  13. 分时与批处理同时存在的系统:分时程序优先处理,批处理后处理。系统也分为前后台系统,前台系统分时运行,后台系统批处理运行,分时作业是比较小的,需及时处理的,称为前台作业。 批量处理作业对时间性要求不强称为后台作业

  14. 实时操作系统: 规定时间响应请求并处理。硬实时系统是响应和处理时间有着极严格的要求;软实时系统的响应和处理时间有一定的时间范围要求

  15. 嵌入式操作系统 ( Embedded Operating System)

  16. 网络操作系统(构架在不同操作系统之上,对网络资源统一配置):通过网路把各个计算机连接起来,实现通信及资源共享的系统。有集中式模式(运算在一台主机里发生)和分布式模式(多台机运算通过网络交换数据并共享资源和服务)

  17. 分布式操作系统 :网络操作系统的高级形式,大量计算机通过网络联结,获得极高运力与广泛的数据共享。分布式系统中的计算机把一个任务分解成若干并行执行的任务,分别在不同的计算机上执行。

  18. 智能卡操作系统:根据智能卡需求设计开发的。

  19. 操作系统结构:整体式结构是将系统总功能分解为若干子功能。每个子功能分解为更小功能模块,直至不能分解,最后通过函数接口将所有功能模块连接,形成一个整体。

  20. 层次结构是把系统所有功能模块,按调用次序,分成若干层

  21. 微内核(客户机/服务器)结构

  22. 用户空间与内核空间都处于内存空间

  23. CPU由运算器(指令的算术运算和逻辑运算),控制器(能取指、CPU与内存交互,控制程序运行等),寄存器(CPU内部暂存数据,地址,指令,访问速度最快;寄存器分为用户可直接用的寄存器,因为编译器编译高级语言,分配使用这些寄存器,对所有程序都是可用的,包括 AX累加器, BX基址,CX计数,DX数据寄存器,还能分为高八位,低八位AH,BH,CH,DH,AL,BL,CL,DL等,和用户不能直接用的 控制和状态寄存器,比如程序计数器PC记录取出指令的地址。 程序状态字PSW等),高速缓存(CPU和内存之间,由控制器中的MMU管理),

  24. 处理器有两种状态:管态(系统态就是操作系统正在运行)和目态(用户态就是用户程序正在运行);目态到管态需要中断。中断响应时交换中断向量,新的中断向量中PSW(包含CPU工作状态是管态还是目态;条件码指代指令执行后的结果;中断屏蔽位指代是否禁止某些中断,程序的存储保护键。)的CPU状态位标志为管态。管态到目态需要修改程序状态字,实现转换。

  25. 界地址寄存器:寄存器中有一对下限寄存器和上限寄存器来存放该用户程序在内存中的上下限地址,有的系统是基址寄存器与限长寄存器

  26. 存储键:程序进入主存时,该程序的占用的各内存块也有存储保护号。程序的存储键号在程序状态字PSW中。CPU访问主存时,将主存块的存储键与PSW中的“钥匙”匹配,决定访问

  27. 中断:CPU对异步事件的响应;发送中断请求的东西称为中断源;中断请求是中断源向CPU发出的请求信号; 对中断进行处理的软件程序称为中断处理程序;中断发生CPU正在执行的程序位置叫中断断点;处理器暂停当前程序去处理中断叫做中断响应;中断程序结束后恢复原程序叫做中断返回;中断源的有序集合叫做中断字;可以查到中断处理程序入口地址的表,称为中断向量表;中断向量表包含多个中断向量,中断向量由PSW和PC组成。常见中断有时钟中断(时间片到时等引起计时器中断,中断处理程序任务是进程调度),I/O中断(I/O控制器产生,通知I/O操作完成,中断处理函数任务是唤醒程序,如果是IO中断告诉IO错误,那么中断服务程序任务是判定设备故障,并通知系统),控制台中断(通过控制台发出命令引起等)。硬件故障中断(掉电,硬件故障等引起。中断服务函数任务是保存现场,提供诊断信息。)

  28. 异常是执行的指令错误。例如算术溢出、被零除、非法指令

  29. 中断系统分为:硬件中断设备和软件中断处理程序。指令执行周期最后,CPU的控制部件中的中断信号扫描结构来扫描中断寄存器,检测到中断信号后,CPU接收由硬件中断装置发来的中断向量,同时CPU保存中断断点的现场环境,CPU状态切换到管态。
    处理器根据中断号查询中断向量表中的中断向量,获得中断处理程序的入口地址,并将PC置成该地址。控制权转移到中断处理程序。处理程序结束后,CPU会检测到一条中断返回指令。处理器把被中断的程序的现场环境从系统堆栈(内存划分为用户空间与系统空间)中恢复。处理器状态也从管态恢复成被中断时的目态。整个中断处理结束。

  30. 多级中断:硬件上看,是多根中断请求线连接到中断逻辑线路上。不同的线有不同的中断级别。

  31. 系统调用:用户程序必须使用系统调用从系统中获得服务,系统调用(每个系统调用都对应一个功能号,例如0、1、2、3等,每个功能号对应程序,程序入口地址表记录了系统程序名与程序入口地址)会陷入内核并调用操作系统。控制系统调用服务的机构称为陷入机构(陷入指令会携带一个功能号,几个参数进入系统内部,或者通过系统与用户都能访问的寄存器传参,以及在内存开启堆栈区进行传参。陷入处理机构会在系统调用处理前保存CPU现场。系统调用处理结束之后,陷入处理机构恢复处理机现场。)

  32. 机器指令是由硬件线路直接实现的,C代码最后都要编译成目标代码也就是机器码也就是机器指令,再通过硬件实现软件功能

  33. 通道:代替CPU传输I/O数据,又称I/O处理机,CPU执行一条“启动I/O”指令,就启动相应外围设备。通道控制该设备与内存传输数据,外设工作结束会产生一个I/O中断。系统处理这个I/O中断,得知外设工作情况

  34. DMA直接存储器访问技术,当处理器需要读写一整块数据的时候,它给DMA控制单元发送一条命令,包含了I/O设备的地址、开始读写的主存编址、需要传送的数据长度等。

  35. DMA控制器将自动管理整块数据的传送。当这个传送过程完成后,它会给处理器发一个中断。处理器再处理中断时间就知道了工作情况了。

  36. 缓冲技术: 设备之间的数据暂存技术

  37. 时钟(硬件时钟:晶体振荡器间隔产生脉冲,时钟寄存器加1,绝对时钟:日历时间,相对时钟:计算时间间隔)可以在分时系统中,实现时间片轮转运行。可以定时唤醒外部事件,可以记录时间

  38. 程序具有,顺序性,封闭性(结果由初始条件决定,不受外界因素影响),结果的确定性
    ,结果的可再现性

  39. 吞吐量是单位时间系统处理程序的个数

  40. 进程分为系统进程(执行操作系统程序)和用户进程(运行用户程序)两类。

  41. 进程由程序,数据,PCB(进程存在的唯一标志,对进程进行控制和管理; 进程控制通过原语实现(原语由若干指令组成,是必须在管态下执行的不可中断的程序,并且常驻内存。下面是4个常见原语:创建原语:建立PCB:先申请PCB,将信息填入PCB,设置为就绪状态插入就绪队列中 撤销原语:撤销该进程及该进程的“子孙进程”,从队列中消去,释放占用的资源,撤销PCB; 阻塞原语:中断CPU,把CPU的当前状态保存在PCB的现场信息中,把进程的当前状态置为等待状态,插入到该事件的等待队列中去。唤醒原语:等待队列中找到该进程,设置为就绪状态,插入到就绪队列中排队。)。收回PCB,进程也随之消亡 ; PCB中有调度信息包括进程名、进程号、存储信息、优先级、当前状态、资源清单、“家族”关系、消息队列指针、进程队列指针和当前打开文件等;现场信息包括了PSW、界地址寄存器等 ; 内存中PCB的组织有线性方式:所有PCB一个PCB表中;索引方式:就绪索引表和等待索引表,相同状态进程的PCB构成一个队列;链接方式:)组成 ; 进程是程序的运行状态,进程具有并发性,动态性(进程状态动态变化),独立性(进程是一个独立的资源分配单位),交往性(进程间需要交往)

  1. 三状态进程模型:运行状态(运行→就绪;出现在分时系统中。运行的进程的时间片用完发出"超时中断请求","中断处理程序"把该进程的状态修改为就绪状态)(运行→等待,运行中的进程比如等待文件的输入由运行变成等待);就绪状态一旦把CPU分配给它,该进程就可运行。(就绪→运行,调度算法把cpu分配给某就绪进程,标记为运行态)
    ;等待状态也称阻塞状态或封锁状态:等待某事件而不能运行,一旦等到,便转为就绪态。)

  2. 五状态进程模型:运行状态, 就绪状态,阻塞状态,创建状态(建立进程PCB、建立资源表格,分配资源,加载程序,建立地址空间表等。),结束状态(回收除PCB之外的其他资源,并将退出代码传递给父进程)

  3. 七状态进程模型: 就绪状态,运行状态, 阻塞状态, 阻塞挂起状态(进程在外存的挂起态/阻塞态)就绪挂起状态(进程在外存的就绪态),创建状态,结束状态; 注意:挂起就是把进程从内存转到外存,激活就是把进程从外存转到内存,提交就是进程创建成功,进入就绪状态或就绪挂起状态

  4. fork()函数:父子进程用户地址空间相同因为一次一页的方式复制父进程用户地址空间;子进程获得父进程全部的打开文件描述符相同的拷贝,所以子进程可以读写父进程中打开的任何文件。父进程和新建子进程的区子进程分配一个进程描述符,所以他们只有PID不同。

  5. 线程减少程序并发执行的时间和空间开销,与其他线程共享进程所拥有的全部资源,所以创建线程不需分配资源,速度快,属于自己的资源只有程序计数器、寄存器和栈,所以线程切换花费时间少,能独立调度。进程至少有一个线程,一个线程可以创建和撤销另一个线程; 线程有等待、就绪、运行和终止状态。 线程唯一标识符tid和一张线程描述表(记录线程寄存器和栈等现场状态。);同一程序被不同用户调用时创建成了不同的线程。 ; 两个线程共享内存和文件

  6. 线程根据存在位置分为用户级线程(存在于用户态,原语操作与内核无关),内核级线程(原语操作与内核有关。 内核还中保留了线程控制块,用来控制线程,目前 Windows支持内核级线程)

  7. Pthread线程包:pthread_create–创建线程 --> pthread_exit – 终止线程并释放私有资源。 --> pthread_join – 等待线程的终止 --> pthread_yield – 运行另外线程 --> Pthread_attr_init – 建立并初始化线程属性 --> Pthread_attr_destroy – 删除线程属性

  8. 调度分为高级调度(也称作业调度,对磁盘中处于后备状态的作业依照作业说明书为分配资源,装入内存,并创建为进程);中级调度(将处于磁盘对换区中,具备运行条件的就绪进程调入内存,处于内存就绪状态或内存阻塞状态的进程交换到磁盘对换区);低级调度(进线程调度,决定就绪队列中哪个进程将获得处理机); 当CPU为不可抢占时,进线程运行完毕或者阻塞起来进入等待状态时,进行调度;当CPU为可抢占方式,就绪队列中的某进线程优先级高于当前运行进线程时调度。那么如何调度呢? --> 先来先服务 --> 最短作业优先 --> 最短剩余时间优先 --> 轮转法(时间片结束进入就绪队列,等待下一次调度)
    –> 最高优先级法 (静态优先数是优先级用户一开始设置好 , 动态优先数是随着进程/线程运行而改变)

  9. 相关进程:进程的执行影响其他进程的执行结果 ; 无关进程进程执行不影响其他进程的执行

  10. 进程同步是多进程以先后顺序,共同完成一个任务 ; 进程互斥是指相互竞争获取共享资源

  11. 临界资源(临界资源的访问分为4部分有进入区用来检查可否进入临界区,如果可进入则置“正在访问临界区”标志,临界区是对临界资源操作的一段代码,退出区是清除“正在访问临界区”标志,剩余区是代码的其余部分)属于共享资源,在一个时刻,被写入/修改时进程必须互斥使用的资源

  12. 进程互斥的软硬件方法 (硬件指令完成读写不会被打断)

  • 单标志法
    进程Pi和Pj。公用变量turn描述下一个允许进入临界区的进程号;turn为i时,进程Pi可进入,turn为j时,进程Pj可进入

  • 双标志、先检查法
    检查另一个进程是否在临界区,数组flag[i],描述进程i是否在临界区,FALSE代表不在,ture代表在

  • 双标志、后检查法
    标志flag[i] = ture,表示进程i想进入临界区,不再表示进程i在临界区

  • TS(Test-and-Set)指令
    每个临界资源都有一个公共布尔变量lock,TRUE表示正被占用,FALSE表示空闲.TS指令把lock设置为TRUE/FALSE,思路与单标置法一致

  • Swap 指令
    每个临界资源设置一个公共布尔变量lock,每个进程设置一个私有布尔变量key,Swap指令交换lock与key的内容,然后检查key的状态;

  1. 互斥指多进程不能同时使用同一个资源;死锁指多进程互不相让;饥饿指某进程一直得不到资源

  2. 信号量(信号量与交通信号灯的绿灯一致,数字大于0表示可以过多少车,数字小于0表示红灯阻塞了多少车)代表可用资源的个数,每个信号量s有一个整数值s.count(计数)和一个进程等待队列s.queue存放阻塞在该信号量的各进程号。信号量为大于0表示当前的空闲资源数;小于0表示当前等待临界区的进程数。信号量有PV原语操作; P原语申请/消费资源,V原语释放/生产资源。P像挥动旗子表示通过,信号灯值减1;
    ========================p操作

    =========================V操作

    ==========================信号量实现访问临界资源(互斥信号量mutex,初值为1)

    ==============================信号量实现前驱操作(信号量初值为0)

  3. 线程的互斥与同步(线程和进程互斥机制一致,都是使用加锁和解锁的互斥量来保护临界区)

    • 线程的条件变量相关函数 (条件变量功能是阻塞,未满足条件,线程被阻塞)
  4. 进程间通信

  • 共享内存是进程之间的公共内存区,一个写,一个读 ;

  • 消息机制

    • 消息缓冲区 ----- 位于内存由消息长度、消息正文、发送者、消息队列指针组成。
    • 消息队列首指针m_q ----- 一般保存在PCB中。
    • 互斥信号量m_mutex ----- 初值为1,用于互斥访问消息队列,在PCB中设置。
    • 同步信号量m_syn ----- 初值为0,用于消息计数,在PCB中设置。
    • 发送消息原语send(receiver,a)------ 先申请一个消息缓冲区,将a处消息复制进去,然后将该缓冲区挂到接收进程的消息队列
    • 接收消息原语receive(a) ----- 从消息队列中摘下第一个消息缓冲区(若为空,则阻塞等待),并复制到a处,然后释放该消息缓冲区内存。
  • 信箱通信 ----- 创建信箱一个链接两进程,发送进程把信件投入,接收进程任何时刻取出。

  • 管道通信 ----- 管道Pipe是两个进程间的一个打开的共享文件, 发进程从一端写入数据流,收进程需要时从另一端读数据

  1. 高速缓存Cache > 内存RAM(存放正在运行程序的代码及数据,内存分两部分为系统区/内核空间用来存放操作系统,它常驻内存,和用户区/用户空间让用户使用,存放用户程序和数据 ; 那么内存的分配(静态分配 ----- 程序要多少内存在运行前完成; 动态分配 ----- 程序索要内存在运行前中逐步完成)和回收(回收用户释放的内存区,并修改分配表格))(多进程共用内存的相同区域,每个进程都有自己的访问权限) > 外存/磁盘

  2. 物理地址空间存储器地址编号顺序为0,1,2,…,n-1。称为内存的“绝对地址”也称为“物理地址空间”。 用户程序使用的地址称为"逻辑地址”,逻辑地址对应的存储空间称为“逻辑地址空间”。程序执行时把逻辑地址转换成绝对地址称“地址映射”,逻辑地址没有固定的内存绝对地址与之对应。逻辑地址与物理地址需要转换,静态重定位是 装入程序时,程序中的指令地址和数据地址直接转换成绝对地址;动态重定位是装入程序时,指令/数据地址不转换,程序每当执行一条指令,硬件的地址转换机构将逻辑地址与基址寄存器值相加得到绝对地址,然后按绝对地址访问内存,好处是程序执行时改变存放区域仍能正确执行,程序是浮动的,而静态重定位的程序不浮动。
    ================静态重定位

    ================动态重定位

  3. 内存划分成若干个连续分区,每个分区装入一个运行程序。内存划分方法1是 固定分区:内存划分成若干大小固定的分区,它的内存分配表按顺序,每个分区对应一个表目(包括分区序号,分区大小,分区起始地址,使用状态);程序运行时,先找空闲分区分配给程序,并设为占用状态。程序完成时,释放分区内存,系统回收,分区置为空闲状态;内存划分方法2是可变分区(基址寄存器(程序所占分区的起始地址)和限长寄存器(程序所占分区的长度)实现可变分区):在装入程序时,从空闲区划分一个内存分区大小正好等于该程序的, 程序装到分区后,把起始地址和长度作为现场信息存入进程控制块中。CPU选中进程时,分区起始地址和长度被送入基址寄存器和限长寄存器。CPU每执行一条指令先取出该指令中的逻辑地址(cpu取指令是从内存拿指令,该指令具体在内存的什么位置是记录在PC逻辑地址中,再映射成物理地址去取指令或数据,比如move ax 1指令在程序逻辑地址是0x6666,CPU就把0x06666加上基址0x10000得到内存地址016666,CPU就能在0x16666拿数据放在寄存器,进行运算了)。 当逻辑地址小于限长寄存器的值,逻辑地址加基址寄存器值得到绝对地址。逻辑地址大于限长寄存器的值时,“地址越界”,触发硬件中断, 内存动态分配回收(回收分区的上邻分区是空闲的 ------ 合并成大空闲区,修改空闲区表;回收分区的下邻分区是空闲的 ------ 合并成大空闲区,修改空闲区表。回收分区的上下邻分区是空闲 ------ 合并成一个大空闲区,修改空闲区表。)后的很多小空闲块,被称为碎片通过移动技术,把碎片合并成大空闲区放在内存的一端(修改分配表和进程控制块),程序占用区放内存的另一端。对可变分区的管理采用"已分配区表",“空闲区表”

    空闲分区划分策略有最先适应算法(顺序查空闲区表,第一个满足的空闲区分割并分配)最优适应算法(顺序查空闲区表,最小空闲区分割分配)最坏适应算法 ( 顺序查空闲区表,最大空闲区分割分配)

  4. 覆盖技术 ---- 程序的某些部分共享一个存储空间,实现方法 ---- 程序划分为若干不会同时执行程序段,共享同一块内存区域。其中未执行的程序段保存在磁盘,覆盖区执行结束后,再调入内存,覆盖前面的程序段。

  5. 交换技术 ---- 没运行的进程(进程为单位)从内存移到磁盘交换区(有些系统每次交换,进程换到磁盘不同地方。有些系统进程创建同时,也在磁盘上的交换空间分配空间。每次换到为它分配的空间),磁盘交换区移回内存(进程用的是绝对地址,那么再次被换入内存的进程一定要在原来的位置上, 进程用的是相对地址,装入内存需要地址重定位)

  6. 页式存储管理方案; MMU是页式存储的管理硬件部件,MMU把内存分成大小相等的块(快和区不一样,一个区是一片连续地址放一个程序;一个程序放在若干不同的快中),程序的逻辑地址(页号+页内地址)进行分页,页(一”页“纸包住一“块”石头)与块大小一致。内存分配表 ---- 已分配块(表示1),未分配块(表示0),剩余空闲块数;内存分配,先看空闲块数能否满足程序要求,满足就找出为0的位,置成1,空闲块数相应减少,程序装入到这些块中,并为程序建立页表。它的地址转换是页表起始地址寄存器(运行进程的页表在内存的首地址放在进程控制块,从中取出送入寄存器)和页表长度寄存器(运行进程的页表的长度,放在进程控制块中,取出送入该寄存器);页表:程序逻辑地址的页与占用内存块之间的关系;每执行一条指令,查逻辑地址的页号。若页表中无此页号,则“地址错”中断事件。若有则得到对应内存块号访问内存。页表页:存放页表的页面;快表 ---- 快表登记了页表中最频繁部分页号与内存块号的对应关系,程序存取数据时,找数据所在页号,如果在快表中找出对应的内存块号,然后拼接页内地址,以形成物理地址;没找到就找内存中的页表,得到内存块号

  1. 虚拟存储技术 ---- 外存扩充内存,产生虚存(虚拟内存空间);程序正在使用的部分(以页为单位)保留在内存,其余在磁盘,当执行的指令不在内存时动态交换/没内存时,选择部分内存交换到磁盘

  2. 虚拟页式存储管理:进程运行前,装入一个页,之后陆续装入其他页,内存已满,又需要装入新的页时,则置换出某个页,若发现需要的页不在内存则产生缺页中断。可以只调所缺的页(固定分配局部置换:每个进程分配固定页数的内存空间,缺页从该进程页面中选出一个置换)(可变分配全局置换:每个进程分配一定数量的物理块,操作系统保持一个空闲物理块队列。某进程缺页时,取出一物理块给该进程,空闲块队列用完时,从内存中选择一块调出)(每个进程分配一定数目的内存。缺页从该进程页面中选一页置换),也可以调入该页以相邻几个页;那么页面置换算法有"先进先出页面置换算法" ----- 最先装入内存的一页调出(系统有一个当前内存中页的链表,最老的页面在表头,最新的页面在表尾。缺页时置换表头页,调入的新页面到表尾)有"最近最少使用页面置换算法" ----- 缺页时置换掉最长时间未使用的页。有"最近最不常用页面置换算法"----- 访问次数最少的页调出。有"第二次机会页面置换算法" ----- 最近时钟间隔没被访问的页面。

  3. 段式存储管理方案:内存空间动态划分为长度不同的物理段,段的起始地址叫段首地址。段中从0开始编址称为段内地址。- 程序按段划分称为逻辑段。段从0开始编号称为段号。 程序逻辑地址由段号和段内地址组成。;内存分配是 一个逻辑段分配一个物理段。逻辑连续的段,内存中不一定连续存放。段表是程序装入内存后,每个程序有一张段表(段表包括逻辑段号、段首地址和物理段长度),记录逻辑段与物理段之间的关系。段表起始地址寄存器、段表长度寄存器。程序提供的逻辑地址和两个寄存器的内容,形成访问内存的物理地址。

  4. 段页式存储管理方案:内存分为页,程序划分成段(段分成若干页)。程序有一张段表(记录段对应页表的起始地址和长度),每个段有一张页表(给出段的各逻辑页与内存块之间的关系)。

  5. 程序和数据以文件形式存储在磁盘,导致了文件系统的出现。

  6. 文件的读写是系统提供读写指针(读指针记录文件当前的读取位置;写指针记录文件当前的写入位置),为正在使用的文件。

  7. 文件分类为系统文件 ----- 操作系统/系统应用的程序和数据文件。只许执行。不能读写和修改。库函数文件 ----- 应用程序的组成文件,允许读、执行,不许修改 ; 用户文件------ 用户委托文件系统保存的文件

  8. 文件的组织形式分类为普通文件 ---- 文件为一般格式文件,例字符流文件。目录文件 ----- 目录文件由文件目录构成 ; 特殊文件 ----- IO设备被看作是特殊文件,操作系统会把对特殊文件的操作转成为对应设备的操作。

  9. UNIX类操作系统中文件的分类为普通文件- 内部无结构的一串字符组成的文件。目录文件- 由文件目录项所构成的文件。特殊文件 - I/O设备也看成是一种文件

  10. 文件的逻辑结构 (流式文件+记录式文件,一个记录是文件的最小单位)
    流式文件 ----- 连续字符集合,又称字符流文件(源程序,目标代码属于流式文件,UNIX类系统采用的是流式文件结构)。

  11. 文件物理结构分为顺序结构 ----- 逻辑连续的文件信息存放在连续物理块中。链接结构 ----- 逻辑连续的文件存放在链式物理块中。索引结构

  1. 外存储设备由驱动(功能读写,如果存储实体同驱动器分离,称为可移动存储实体,比如U盘)和存储介质(又称卷,比如 磁盘(可重写)、磁带(不可重写)、光盘和闪存等)组成

  2. 磁盘由盘面(又称盘片,每个盘片有读写两个磁头(磁头与磁头臂相连),分别两面读写)、柱面(磁盘片的相同磁道称为柱面)、磁道(系统在对磁盘初始化时,在盘面上划分同心圆)和扇区(每个磁道分为扇区/物理块,扇区是最小单位,)组成。- 访盘时间由寻道时间(寻道时间最长)、旋转定位时间和数据传输时间(信息在磁盘和内存之间的传送时间
    )。

    磁带是顺序存取(从前到后依次访问文件信息); 随机存取(直接存取文件中的任意一个记录); UNIX类操作系统的文件系统采用了顺序存取和随机存取两种方法。

  3. 每个文件都有文件控制块FCB,所有文件的PCB构成文件目录(文件符号名到文件物理地址的映射)。目录文件的PCB称为目录项。

  • 文件目录结构有一级目录结构,二级目录结构 (在第一级目录结构上做用户分类;第一级为主文件目录,给出用户名和用户目录所在的物理位置;第二级为用户文件目录,又称用户子目录,给出了该用户所有文件的FCB),多级目录结构 (二级目录推广形成);0. " . “代表当前目录,”. . "代表根目录。1. CREATE,创建目录2. DELETE,删除目录3. OPENDIR,打开目录4. CLOSEDIR,关闭目录5. READDIR, 返回打开目录的下一目录项6. RENAME,文件可换名,目录也可换名7. LINK,链接技术允许在多个目录中出现同一文件
    ==========================一级目录结构

    ===========================2级目录结构

    多级目录结构
  1. 文件系统的存储空间的分配与回收采用"位示图" 0表示磁盘中的物理块/扇区已分配,“空闲块表"记录外存中全部空闲的块/扇区,当创建文件要首先查找空闲块表,连续空闲块个数等于申请值。就从空闲块表中删去,分配给申请者;当删除文件要收回占用的物理块,顺便合并成更大的空闲区域,最后修改空闲块表项。空闲块链表是将外存中所有空闲块连成链表( 申请从链首取空闲块,释放将物理块接入链尾)
    =============位示图
    ============空闲块表”

    ===========空闲块链表

  1. (打开文件时,系统在内存以文件表保存一些必要的信息)(系统打开文件表 ------ 系统打开文件表专门用于保存已打开文件的文件控制块)(用户打开文件表 ------ 每个进程中都有一个“用户打开文件表”,内容有文件描述符、打开方式、读写指针、系统打开文件表入口等)

  2. 文件的操作有(建立文件- 建立文件FCB,建立存储空间)(打开文件 - 把文件控制块FCB送到内存。)(读文件)(写文件- 把内存中指定数据写入指定文件中,系统在外存分配物理块,信息写到上面去。)(关闭文件- 修改PCB内容。)(删除文件- 收回文件PCB及物理块等资源。)(指针定位- 用fd找到用户文件表,将文件表中读写指针位置设为新位置)

  3. (共享技术 ------ 多级目录结构中,链接法link是常用的文件共享技术。)(允许目录项链接到任一表示文件目录的结点上是把所有要共享的文件放在一个公共目录,所有要共享这些文件的用户与共享目录链接。)(只允许链接到表示普通文件的结点上- 通过不同路径访问同一个文件,即一个文件有多个“别名”。)

  4. 文件的保护有 (建立副本,定时转储,存取权限(存取控制矩阵,二级存取控制))

  5. 拥有者(owner)同组用户(group)其他用户(other)读操作(R)写操作(W) 执行操作(X = execute)不能执行任何操作(–)。( 目录读操作----- 可以列出这个目录下的文件内容) (目录写操作 ----- 用户可在目录下增删文件,改文件名)( 目录执行操作 ------用户可cd进入目录)

  6. 文件的保密 (隐蔽文件目录,设置口令,使用密码加密文件)

  7. (提高文件系统的性能采用块高速缓存- 内存中有一些磁盘块(逻辑上属于磁盘)称为块高速缓存,所需文件块如果在块高速缓存中,可直接读;否则要启动磁盘,再将块读到高速缓存中,再拷贝到其他内存区域。)
    (磁盘的驱动调度-①先来先服务调度算法 ②最短寻道时间优先调度算法③扫描算法(SCAN)- 磁头移动的过程中是双向的,位于磁盘中间位置的磁道优先服务④循环扫描算法(C-SCAN)- 磁头移动的过程中是单向的,从外向内,如果有磁道请求,则服务,直到最内端服务完毕,然后回到最外继续下一个循环。

  8. FAT有三个版本:FAT-12、FAT-16、FAT-32

  9. 输入/输出设备(键盘、鼠标,显示器、打印机) == I/O设备(调制解调器、网络适配器,传感器、转换器等也属于I/O设备,将外部模拟信号转换成数字信息输入计算机进行处理,将结果转换成模拟量驱动执行结构达到控制的目的) == 外部设备 == 外设(除CPU和内存的所有设备)

  10. 按设备的信息组织方式分类①字符设备 ----- 以字符为单位处理信息,字符设备不可寻址 ②块设备 ----- 以数据块为单位处理信息,能随时读写任何一块,存储设备是块设备 ①共享设备 ----- 允许多进程使用。磁盘是典型的共享设备,若干进程可以交替地从磁盘上读写信息。 ②独占设备 ----- 一段时间只允许一个进程使用的设备。 ③虚拟设备 ----- 被虚拟技术把独占设备改造成共享设备的。

  11. 计算机I/O系统的中央是CPU和主存,通过总线与适配器相连,第三层是设备控制器,最外层是外围设备(外围设备包括输入设备、输出设备、外存设备、数据通信设备和过程控制设备几大类,外围设备在自己的设备控制器的控制下工作,设备控制器通过适配器和主机连接)。 每个设备控制器都有若干寄存器(分配唯一的地址使CPU能够访问,该地址称为I/O端口地址,端口地址与内存地址统一编址,称为内存映射I/O;I/O独立编址与内存地址是完全独立的;I/O独立编址的CPU需要专门的I/O指令对I/O端口进行操作)用来与CPU进行通信,包括控制寄存器、状态寄存器和数据寄存器。 通过写入控制寄存器,操作系统可以控制设备发送数据、接收数据、开启或关闭;通过读取状态寄存器,操作系统可以获悉设备的状态,如是否准备好接收新的数据; 数据寄存器通常作为操作系统可以读写的数据缓冲区。

  12. I/O设备数据传送控制方式有(1)程序直接控制方式 ---- - 进程直接控制CPU和外设传送信息也称为PIO(Programmed I/O,程控I/O)②操作是进程从外设输入数据时,CPU发出"启动设备"的启动命令。进程进入测试等待状态(等待时间,CPU不断检查控制器的状态寄存器是否为完成状态,外设在数据都送入数据缓冲寄存器后,才将该状态寄存器置为完成)。CPU检测到状态寄存器为完成,则从设备数据缓冲寄存器读取数据到内存或CPU。当进程向输出设备输出数据,也发出"启动命令",等待设备准备好后,才能输出数据。(2)中断控制方式-需要 外设数据准备好,置位中断请求触发器,向CPU发出请求,CPU执行完当前指令,响应该请求,中断判优电路工作对优先级最高的中断请求给予响应。保留断点、转到中断服务程序入口执行程序。服务程序结束时,恢复现场继续执行。

  13. DMA控制器DMAC从CPU完全接管对总线的控制,数据交换在内存和I/O设备之间进行
    ②传送过程分为预处理阶段(CPU执行I/O指令对DMAC进行初始化与启动) --> 数据传送阶段(外设数据准备好发送DMA请求,CPU当前机器周期结束后响应DMA请求,DMAC从CPU接管总线的控制权,完成对内存寻址,决定数据传送的内存单元地址,对数据传送字进行计数,执行数据传送的操作。传送结束,DMAC向CPU发中断请求,CPU响应中断,转入中断服务程序,校验数据等。)

  14. 通道有自己的指令和程序,对外设统一管理和完成外设与内存的数据传送,分类 为a.选择通道 ------ 一种高速通道(主要连接高速外围设备,如磁盘、磁带以数据块高速传输),连接多个设备,通道只能选择一个工作。b.数组多路通道 ------ 数据传送时,只为该设备服务,当该设备暂时没有传数据,暂时断开与连接,为其他设备服务c.字节多路通道 ----- 多台低中速设备(以字节传输)服务。各设备轮流时间片与通道传送,

  15. 设备驱动程序是 与硬件打交道的软件,那么与设备无关的系统软件需要实现的功能有如下

  16. 系统调用包括I/O系统调用,先由库函数(把系统调用所需参数放在合适的位置)实现,由其他的I/O过程去实现真正的操作。

  17. SPOOLing系统 ----- 输入SPOLING,输出SPOLING
    ①SPOOLING打印机应用举例 - 有一台打印机,一个进程打开长时间不用,导致其他进程无法使用。方法是创建守护进程以及SPOOLing目录。进程要打印文件,首先生成打印的整个文件,放在SPOOLing目录下。然后守护进程完成该文件的打印工作,

  18. I/O软件层次

  19. 缓冲区(硬件实现 ----- 硬件实现称为硬缓冲。通常设置在IO设备中)(软件实现 ----- 内存中专门开辟数据暂存区域。)(a.单缓冲 ---- 通道将数据送入缓冲区,CPU从缓冲区读数据;)( b.双缓冲----- 输入输出缓冲区,CPU和管道分别访问)(c.多缓冲 -----一组输入输出缓冲区)(d.缓冲池/缓冲区队列 ----- 系统中所有缓冲区统一起来管理)

  20. 设备分配技术
    (1)设备分配算法的数据结构

    ①系统设备表SDT(System Device Table)

    • 整个系统只有一张,每一行叫做表目(一个表目代表一个外设),反映系统中的外设资源的类型、数量、占用情况。

    ②设备控制表DCT(Device Control Table)

    • 每个外设都有一张设备控制表DCT,记录设备,设备控制器数据,保存了控制器的入口位置。

    ③控制器控制表COCT(COntroller Control Table)

    • 每个控制器有一张控制器控制表COCT,用于查看某控制器的使用,分配,通道相连的情况。

    ④通道控制表CHCT(CHannel Control Table)

    • 每个通道都有一张CHCT,反映了通道的情况

设备分配策略

  • a.先来先服务策略(FIFO)------ 进程先来先服务
  • b.高优先级优先策略 ----- 高优先级的进程优先执行

(2)独占设备的分配 ----- 申请,使用,使用,…,使用,释放……

(3)共享设备的分配 ----- (隐含申请)使用(隐含释放),(隐含申请)使用(隐含释放),…,(隐含申请)使用(隐含释放)……

  1. 死锁 ----- 互相争夺共享资源,导致进程相互无法推进
    死锁产生的原因①申请不同类资源产生死锁 (使用不合理导致)

    ②申请同类资源产生死锁 (资源不够导致)

    解决死锁的方法:(1)预防死锁(1.破坏“互斥条件”----- 资源不能被一个进程独占)( 2.破坏“不可剥夺”----- 进程申请资源时先检查是否可用,不可用就剥夺再分配给这个进程)(3.破坏“请求和保持”有采用静态分配策略 ------ 进程执行前申请需要的全部资源,全部拿到后,该进程才开始执行;还有进程没有占用资源时才允许申请资源 ----- 进程没有占用资源才允许申请资源,如果占用了应先归)( 4.破坏“循环等待”条件- 所有资源顺序编号,稀少资源编号大。申请资源时,按照编号顺序进行,得到编号小的,才能申请编号较大的资源。)
    (2)避免死锁- 资源申请进行动态检查,如果分配后可能发生死锁,则不予分配。(3)检测死锁就是当进程申请一个已被其他进程占用的资源时,就进行死锁检测(4)解除死锁就是让进程释放资源并继续运行; 为进程分配资源时,不采取任何措施,不断判定死锁是否发生,一旦发生,则采取措施解除死锁

  2. 活锁 ---- 两个进程都需要使用共享资源,但是都互相谦让,导致进程无法推进

  3. 饥饿 ------ 线程一直不能获得所需要的资源,导致无法推进

  1. 资源分配图 ----- 描述系统资源和进程的状态。

---- 招聘之操作系统原理 ----相关推荐

  1. 【2021-07-31 更新】【梳理】简明操作系统原理 第十九章 身份认证和访问控制(docx)

    配套教材: Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Re ...

  2. 计算机四级操作系统原理知识汇总,2015年全国计算机四级《操作系统原理》考试内容...

    2015年全国计算机四级<操作系统原理>考试内容 一.操作系统概述 1.操作系统基本概念.特征.分类 2.操作系统主要功能 3.操作系统发展演化过程,典型操作系统 4.操作系统结构设计,典 ...

  3. Linux 操作系统原理 — 内存 — 内存分配算法

    目录 文章目录 目录 前文列表 内存碎片 伙伴(Buddy)分配算法 Slab 算法 虚拟内存的分配 内核态内存分配 vmalloc 函数 kmalloc 用户态内存分配 malloc 申请内存 用户 ...

  4. Linux 操作系统原理 — 内存 — 基于局部性原理实现的内/外存交换技术

    目录 文章目录 目录 前文列表 基于局部性原理实现的内-外存交换技术 局部性原理 Swap 交换分区 前文列表 <Linux 操作系统原理 - 内存 - 物理存储器与虚拟存储器> < ...

  5. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  6. Linux 操作系统原理 — 内存 — 基于 MMU 硬件单元的虚/实地址映射技术

    目录 文章目录 目录 前文列表 物理地址与虚拟地址 内存空间的组织方式 虚拟地址空间的编址 内核态地址空间 用户态地址空间 内-外存空间的交换与虚拟存储空间之间的映射关系 缺页异常 前文列表 < ...

  7. Linux 操作系统原理 — 系统结构

    目录 文章目录 目录 Linux 系统架构 Linux 内核 内存管理 进程管理 文件系统 设备驱动程序 网络接口 Shell Linux 系统架构 Linux 系统一般有 4 个主要部分:内核.Sh ...

  8. 实验三银行家算法linux,操作系统原理与linux_银行家算法实验报告.doc

    . . . PAGE 成 绩 评 阅 人 评阅日期 计算机科学与技术系 实 验 报 告 课程名称: 操作系统原理与linux 实验名称: 银行家算法 2011年 04 月 实验三 银行家算法 一.实验 ...

  9. 操作系统原理第七章:死锁

    目录 1 死锁的基本概念 2 死锁的必要条件 3 死锁预防 3.1 抑制死锁发生的必要条件 4 死锁避免 4.1 资源分配图法 4.2 银行家算法 5 死锁的检测 5.1 每一种资源类型只有一个实例 ...

最新文章

  1. python数据分析入门学习笔记儿
  2. python图像识别步骤_利用百度智能云结合Python体验图像识别(转载来自qylruirui)
  3. IOS开发之UI基础LOL英雄展示-15
  4. UEditor 百度富文本编辑器 .Net实例
  5. jq获取当前完整html,jquery怎样获取html的内容?
  6. 如何基于 Flink 生成在线机器学习的样本?
  7. Robust Principal Component Analysis?(PCP)
  8. struts中action名称反复导致的神秘事件
  9. 解决RStudio中plot.new() : figure margins too large问题
  10. linux c 读txt文件内容,如何利用C/C++逐行读取txt文件中的字符串
  11. 编译OpenJDK12:freetypeScaler.obj error LINK2019 无法解析的外部符号
  12. BZOJ3506 [CQOI2014]排序机械臂
  13. 破解基础篇之第一部分
  14. 51驱动AD9833
  15. 编译原理生成语法树c语言,编译原理
  16. 智芯传感压力传感器在咖啡机中的应用
  17. 如果说这个世界不是真实存在的,只是一段代码,迄今为止你发现了哪些bug?
  18. 存档属性是做什么用的?
  19. Android OOBE开发
  20. 蓝桥杯 外卖店优先级

热门文章

  1. python求两数最大公因数_使用辗转相除法求两个数的最大公因数(python实现)
  2. 全体起立!广州大学数据库综合设计实验
  3. 打破微信扫码进群限制,我用webot社群助手是怎么办到的?
  4. TensorFlow对象检测-1.0和2.0:训练,导出,优化(TensorRT),推断(Jetson Nano)
  5. Revit二次开发入门捷径_升维学习、降维打击
  6. Shell学习笔记:#*、%*字符串掐头去尾方法
  7. linux垃圾清理总结(超实用)
  8. 解决studio 3T时间到期方法
  9. 欧朋Opera 浏览器(打不开百度)提示“您的连接不是私密连接”,解决办法
  10. Openstack Train版搭建