![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
细数风雨
这个作者很懒,什么都没留下…
展开
-
死锁笔记
死锁是多个进程在运行过程中因竞争资源导致的一种僵局,如果没有外力作用它们都将无法推进。产生死锁的四个必要条件互斥条件:进程要求对所分配的资源进行排他性控制,一段时间内某资源仅为一个进程所占。请求和保持条件:当进程因请求资源而阻塞时,对自己已经获得的资源保持不放。不剥夺条件:进程的资源在未使用完前,不能剥夺,只能在使用完后自己释放。环路等待条件:在发生死锁时必然有一个资源-进程形成环链。解决死锁的基本方法预防死锁:一次性分配所有资源。(破坏请求条件)只要有一个资源得不到分配,其他资源也不分配原创 2021-03-10 16:01:31 · 83 阅读 · 0 评论 -
操作系统锁机制-1
互斥锁互斥锁加锁失败时,线程会释放CPU给其他线程。互斥锁是一种独占锁,当线程A加锁成功后此时互斥锁已经被线程A独占了,其他的线程枷锁就会失败。当线程枷锁失败后内核会将线程设为阻塞状态,锁被释放后内核会在合适的时机唤醒线程。互斥锁加锁失败会产生开销,两个进程的上下文切换。自旋锁自旋锁加锁失败后线程会进入忙等,直到它拿到锁。自旋锁开销小一般不会产生线程上线文切换。需要注意的是如果是单核CPU需要抢占式调度器,因为忙等进程不会放弃CPU。读写锁只读取公共资源用读锁加锁,要修改公共资源用写锁加锁。当原创 2021-03-03 20:08:13 · 456 阅读 · 1 评论 -
磁盘调度算法-1
磁盘调度算法调度磁盘的访问,提高磁盘的访问效率。先来先服务顾名思义先到的请求先被服务。先访问先提出访问的磁道。最短寻道时间优先先访问到磁头位置时间最短的磁道,但是这种算法会产生饥饿,磁头可能一直在一个小范围内移动。扫描算法规定磁头在一个方向上移动,访问所有未完成的请求,直到该方向上最后磁道才调换方向。也叫电梯算法。性能良好,但是中间磁道访问频率高,两遍访问频率低。循环扫描算法只在一个方向上扫描,到头后立即复位到起始边。LOCK和C-LOCK扫描算法和循环扫描算法的改良,不是访问到最后磁原创 2021-03-03 15:27:14 · 175 阅读 · 1 评论 -
文件系统笔记 -7
软链接和硬链接软链接软连接是创建一个文件,这个文件有自己的inode,但是这个文件的内容是另外一个文件的路径。目标文件删除,链接文件还在,只是找不到指向的文件了。硬链接多个目录项中的索引节点是同一个,只有删除所有硬链接和源文件文件才会被真正删除。...原创 2021-03-02 22:08:14 · 41 阅读 · 0 评论 -
文件系统笔记 -6
目录的存储普通文件存储的是文件数据,而目录文件里面保存的是目录里面一项一项的文件信息。目录文件最简单的保存方式就是列表,一项一项地将目录里的文件信息(文件名,文件inode,文件类型)列在表里。但是列表查找费力,所以改成哈希表的形式,把文件名变成一个hash值,如果存在哈希值代表文件在该表中。...原创 2021-03-02 21:35:07 · 49 阅读 · 0 评论 -
文件系统笔记 -4
文件的存储文件的存储主要有以下两种:连续空间存放非连续空间存放连续空间存放方式顾名思义,文件存放在磁盘连续的物理空间中,这种存储方式的读取效率很高。存储时文件头里需要指定起始块的位置和长度。缺点:有磁盘空间碎片、文件长度不易扩展。非连续空间存储方式非连续空间存储方式分为链表方式和索引方式。链表方式链表的方式存储是离散的、不连续的,因此可以消除磁盘碎片,同时文件的长度可以动态扩展。根据的实现的方式,分为隐式链表和显式链表。隐式链表:实现方式是文件头要包含第一块和最后一块的位置,并且每个数原创 2021-03-02 20:50:48 · 284 阅读 · 0 评论 -
文件系统笔记 -3
文件打开打开一个文件之后,操作系统会跟踪进程打开的所有文件,会有一个打开文件表维护文件描述符。文件描述符是文件打开的标志。文件描述符中有:文件指针:系统跟踪上次读写位置作为当前文件的位置指针。对于打开文件的进程,此指针是唯一的。文件打开计数器:记录打开该文件的进程个数,当计数器为0系统关闭文件,删除该条目。文件的磁盘位置:记录文件磁盘位置,保存在内存中,加快访问。访问权限:访问模式(只读,读写等)用来允许或接受I/O操作。文件系统的基本操作单位是数据块。当用户进程从文件读取 1 个字节大小的原创 2021-03-02 18:43:38 · 80 阅读 · 0 评论 -
文件系统笔记-1
文件系统以Linux为例概念文件系统的基本数据单位是文件,文件系统的作用是对磁盘上的文件进行组织管理。组织的方式不同就会形成不同的文件系统。Linux系统为每个文件分配两个数据结构:索引节点(记录文件元信息),目录项(记录目录层次结构)索引节点(inode):用来纪录文件元信息,如inode编号,文件大小,各种日期,访问权限,以及在磁盘的位置等。目录项(dentry):用来纪录文件的名字,索引节点指针以及其他目录项的层级关系。目录项是内核维护的一个数据结构,不存放在磁盘而是缓存在内存。目录项和原创 2021-03-02 11:31:15 · 110 阅读 · 0 评论 -
进程间通信笔记-1
进程间通信每个进程的用户地址空间都是独立的,一般而言不能相互访问,所以进程通过内核进行通信。管道通信管道就是内核里的一串缓存,管道传输数据是无格式的流且大小受限,通讯数据遵守先进先出原则。匿名管道的通信范围是父子进程,命名管道的范围是任意两个进程。消息队列管道效率低不适合频繁地交换数据。消息队列是保存在内核中的消息链表。发送的数据会被分成一个一个的数据单元,即消息体(数据块)。消息的发送方和接收方要先约定好消息体的数据类型。消息队列的生命周期跟随内核,如果没有释放消息队列或者关闭操作系统,消原创 2021-03-01 22:45:15 · 46 阅读 · 0 评论 -
内存管理笔记 -2
段页式内存管理内存分段与分页可以组合在一起使用,先把程序划分成多个有意义的段,然后把每个段划分成多个页,这样地址结构就由段号、段内页号、页内位移三部分组成。原创 2021-03-01 21:52:17 · 53 阅读 · 0 评论 -
内存管理笔记-1
虚拟内存操作系统提供的一种机制,将虚拟地址和不同的物理地址映射起来。进程要访问虚拟地址时由操作系统转化为物理地址,这样进程写入的是不同的物理地址就不会冲突了。进程持有的虚拟地址是通过CPU芯片中的内存管理单元转化成物理地址的。操作系统通过内存分段和内存分页的方式来管理虚拟内存和物理内存的关系的。内存分段程序是由若干个逻辑单元组成的,例如代码分段、数据分段、栈段等。不同的段有不同的属性,所以通过分段来吧这些段分离出来。分段机制下虚拟地址由两部分组成,段选择子和段内偏移量。段选择子保存在段寄存器内,原创 2021-03-01 21:39:37 · 43 阅读 · 0 评论 -
进程与线程笔记 -8
进程调度非抢占式调度:执行一个进程直到这个进程被阻塞或者这个进程退出才会调用其他进程,不会处理时钟中断。抢占式调度算法:挑选一个进程,进程执行一段时间,超过这段时间进程还在运行就会被挂起,接着挑选另外的进程。抢占式调度算法需要在时间间隔末端发生时钟中断,以便返回给调度程序进行调度。调度原则保证CPU的利用率,确保CPU始终处于忙碌状态。提高系统进程吞吐量,尽量让更多的进程都能获得CPU的使用权。减少周转时间,使进程运行和阻塞时间的和尽可能小。减少进程等待的时间。尽快让用户的进程得到响应。先原创 2021-03-01 17:25:06 · 229 阅读 · 0 评论 -
进程与线程笔记 -7
线程实现用户线程用户线程是基于用户态的线程管理库来实现的,TCB也是在管理库中实现的。操作系统看不到TCB,只能看到PCB。用户线程的管理调度是用户级线程库函数完成调度的,操作系统不参与。优点:每个进程由私有的线程控制块列表,用来管理跟踪线程,TCB使用用户级管理库函数管理,可以用在不支持线程技术的操作系统。管理由库函数进行管理,不需要内核态和用户态切换,速度快。缺点:操作系统不参与线程调度,如果线程发起系统调度被阻塞,那进程所有的线程都不能执行了。线程开始运行后除非它主动交出CPU否则其原创 2021-03-01 16:12:58 · 51 阅读 · 0 评论 -
进程与线程笔记 -6
线程上下文切换线程是CPU调度的单位,当进程只有一个线程时,线程就等于进程,否则线程上下文切换时不需要修改全局变量和共享内存等资源,但是线程的私有资源需要保存。原创 2021-03-01 10:56:29 · 45 阅读 · 0 评论 -
进程与线程笔记 -6
进程与线程进程是资源分配的单位,线程是CPU调度的单位。进程拥有完整的资源,线程只独占必不可少的资源。两者都有就绪、运行、阻塞状态,具有相同转换关系。线程可以减小并发执行的时间和空间开销(线程创建的时间比较快,不需要处理一些资源信息,直接共享。线程终止的时间段,因为需要释放的资源少。线程切换比进程切换时间少,线程切换不需要切换页表,而进程需要。线程间信息传递通过共享内存和文件,不需要经过内核。)。...原创 2021-03-01 10:40:27 · 49 阅读 · 0 评论 -
进程与线程笔记 -5
线程进程特性进程间可以并发运行进程共享相同的地址空间线程概念线程就相当于进程中的一个执行流程。同一进程内的线程共享代码段、数据段、打开的文件等资源,但每个线程有自己的独立的一套栈和寄存器,这样可以保证线程的控制流相对独立。线程的优点一个进程内可以同时存在多个线程线程之间可以并发线程之间可以共享地址空间等资源线程缺点当进程的一个线程崩溃,这个进程其他所属的进程也会崩溃。...原创 2021-03-01 10:25:05 · 40 阅读 · 0 评论 -
进程与线程笔记 -4
进程切换进程间是共享CPU的,所以需要进程切换让不同的进程都能够在CPU运行,这个操作就是进程切换。CPU上下文切换任务给CPU运行前,CPU需要知道任务从哪里开始加载运行。操作系统会事先帮CPU设置好CPU寄存器和程序计数器。CPU寄存器和程序计数器是CPU在运行任务前所需要的环境,这个环境就是CPU上下文。CPU上下文切换就是把上一个任务的CPU上下文保存起来,然后加载新任务的上下文,跳转到程序计数器所指的新位置,执行新任务。进程上下文切换进程上下文切换就是CPU上下文切换的一种。进程原创 2021-03-01 09:29:20 · 46 阅读 · 0 评论 -
进程与线程笔记 - 3
进程的控制创建进程为新进程分配一个唯一的进程标号,申请一个空白的PCB,如果没有可用的PCB则创建失败。为进程分配资源,如果资源不足,就进入等待状态。初始化PCB如果进程调度队列能接纳新进程,那就将新进程插入就绪队列,等待被调度运行。终止进程终止进程有三种方式:正常结束、异常结束、外接干预。查找需要终止进程的PCB。如果处于执行状态,则立刻终止该进程执行,然后将CPU资源分给其他进程。如果还有子进程,则将其所有子进程终止。将进程所拥有的的资源退还给操作系统或父进程。将PCB从队列中删原创 2021-03-01 08:57:53 · 95 阅读 · 0 评论 -
进程与线程笔记 - 2
进程控制块(PCB)PCB是进程存在的唯一标识,进程存在,PCB存在,进程消亡,PCB消亡。进程控制块携带的信息进程描述信息:进程标识符(每个进程都有唯一的进程标识符)、用户标识符(进程所属的用户,为共享和保护服务)进程控制和管理信息:进程的状态,进程的优先级资源分配情况:有关内存地址或虚拟地址的空间信息,所打开的文件列表以及所使用的I/O设备信息。CPU相关信息:CPU中各个寄存器的值,当进程被切换时,CPU信息保存在PCB中,当进程重新执行时可以从断点处执行。进程控制块的组织方式PCB通原创 2021-02-28 23:03:02 · 54 阅读 · 0 评论 -
进程与线程笔记-1
进程进程概念: 我们编写的程序通过编译形成二进制可执行文件,当我们运行这个可执行文件,它会被装载到内存,接下来CPU会只执行程序当中每一条指令,这个运行中的程序就是进程。进程并发和并行: 单核切换执行进程是并发,多核一起执行是并行。进程的状态运行状态:进程占用CPU阻塞状态:进程因为某一事件发生而暂停,不可运行就绪状态:可以运行,但是有其他进程占用CPU创建后先进入就绪状态。进程挂起 进程从物理内存掉到硬盘,没有实际占用物理内存的情况就是挂起。所以可以把阻塞的进程挂起来更好地利用物理内存。原创 2021-02-28 22:45:59 · 40 阅读 · 0 评论