![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 62
qq_41386300
这个作者很懒,什么都没留下…
展开
-
进程相关
1. 进程的状态三种基本状态就绪状态:当进程已获得除cpu以外的其他资源后,只要获得cpu,便可立即执行,此时进程的状态就称为就绪状态执行状态:进程已获得cpu,正在执行阻塞状态:正在执行的进程由于由于发生某事件而暂时无法继续执行,便放弃处理机而处于暂停状态,这种赞停状态就是阻塞状态图具有挂起状态的状态转换图图处于静止就绪状态的进程不能再被调度执行2. 进程控制块2.1 作...原创 2019-10-13 22:09:14 · 110 阅读 · 0 评论 -
进程间通信方式
进程间通信(IPC)介绍进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统I...原创 2019-08-14 19:25:45 · 102 阅读 · 0 评论 -
堆和栈
先来看一下内存内部的组织情况从上图可知,程序占用的内存被分了以下几部分.1、栈区(stack)由编译器自动分配释放 ,一般存放一些函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的内存分配是连续分配的,即,所分配的内存是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存.2、堆区(h...原创 2019-06-03 17:48:10 · 103 阅读 · 0 评论 -
内存管理
使用内存:将程序放到内存中,PC指向开始地址放入内存后会发现地址上会出现问题,如下要调用地址为40处的指令,但其实要调用的指令在内存中是1040,你却跑到40处了,显然错了,所以要修改程序的地址但是我们发现程序载入后还需要移动,如下:我们会把睡眠中的进程1移到磁盘,把要运行的进程2调入内存,当进程1要运行时再调回内存,那么问题来了,假设开始时的进程1的起始地址1000,那么调出去再...原创 2018-12-25 23:18:17 · 103 阅读 · 0 评论 -
死锁的处理
死锁多个进程由于互相等待对方持有的资源而造成的谁都无法执行的情况就是死锁死锁的产生原因资源的互斥使用,一旦占有别人无法使用进程占有了一些资源,又不释放,再去申请其他资源总结:几个进程各自占有的资源和互相申请的资源形成了环路等待死锁的4个必要条件死锁处理1. 死锁预防2. 死锁避免每次都判断此次请求是否会引起死锁怎么找出安全序列呢?银行家算法复杂度Tn=O...原创 2018-12-24 16:52:14 · 214 阅读 · 0 评论 -
进程同步与信号量
进程同步如上图,司机要想启动车辆,必须等待一个信号,售货员在车关门之后,发送一个信号什么是进程同步?让进程走走停停来保证多进程合作的合理有序只是发信号还不能解决全部问题,如下例引入信号量本来P2也应该被唤醒,所以只是用counter来决定还是不够的,也就是只是发信号还是不够的,需要一个量来记录一些信息,比如上例要记录等待了多少个进程信号量就是个整形变量如上图,P进...原创 2018-12-23 22:18:51 · 291 阅读 · 0 评论 -
文件系统
原创 2018-12-27 20:03:27 · 99 阅读 · 0 评论 -
磁盘与文件
生磁盘block是盘快号磁盘到文件文件使用磁盘实现原创 2018-12-27 16:27:20 · 229 阅读 · 0 评论 -
I/O系统
I/O与显示器键盘原创 2018-12-26 20:26:59 · 130 阅读 · 0 评论 -
内存管理之虚拟内存
内存换入内存换出原创 2018-12-26 17:23:06 · 115 阅读 · 0 评论 -
进程调度算法
什么是CPU调度?简单的来说,CPU调度就是就绪队列里面有好多进程,应该选择谁来执行?这个选择的过程就是调度FIFO先来先服务谁先来就先执行谁缺点:如果有个进程它只是干一些很简单的事情,你却让它等很久,这就有点不太好了短作业优先服务很短的作业可以适当优先如果这个作业变得越来越长,可以适当的降低它的优先级怎么样才能让进程满意?尽快结束任务:周转时间(从任务进入到任务结束)少...原创 2018-12-01 22:59:55 · 670 阅读 · 0 评论 -
内核极线程基础
内核级线程的切换和用户级线程的比较用户级线程是从一个栈到两个栈而核心级线程是从一套栈到两套栈,因为核心级线程在用户态跑的时候用的是用户栈,当它进入内核之后,用的是内核栈,所以是一套一套的栈用户级线程切换是TCB切,然后根据TCB切换用户栈核心级线程切换是TCB切,然后根据TCB切换一套栈,用户栈切,内核栈也切用户栈和内核栈的关联进入内核就会用到内核栈,进入内核的为一方法就是中断...原创 2018-11-28 10:55:09 · 138 阅读 · 0 评论 -
用户级线程
引入线程如下图,映射表就是资源,因为映射表代表的是内存进程切换的时候只切换指令不切换资源,这就是线程的切换,也就是说在切换进程时,只切换线程,不切换资源,这样既有多个指令的切换,又切起来快,也就是线程的优点:既保留了并发的优点,又避免了进程切换的代价举例:如下图,打开一个网页,我们发现它先刷出文本,过一会儿图片也出来了如果是一个线程工作,它先用一段时间下载数据,下载好...原创 2018-11-26 14:46:35 · 379 阅读 · 0 评论 -
进程
并发:就是一个CPU交替的执行多个程序怎么做到?需要切换到另一个程序时,将pc设置成这段程序的开始举例:如下图,开始时将pc设为50,CPU就开始工作了,在适当的时候操作系统修改cp为200,CPU就开始为新的程序工作了修改寄存器cp就可以了嘛?当然不可以,切出去的时候还需记录原来程序的信息,以便切回来的时候正常执行,每个程序都有一个存放信息的结构:PCB(进程控制块)...原创 2018-11-24 23:52:11 · 152 阅读 · 0 评论 -
操作系统如何支持多进程
多进程图像从计算机启动开始到关机结束 计算机启动的时候最后执行的是main.c中的main main中的fork()创建了第一个进程 if(!fork()) {init();} init执行了shell(如果是Windows,桌面) shell的核心代码:如何组织管理多进程?pcb+状态+队列用PCB放在不同的队列中,用状态推进这多个进程 进行状态转换当然不是所有的进程...原创 2018-11-25 23:35:04 · 1072 阅读 · 0 评论 -
进程基础之CPU工作原理
原创 2018-11-22 09:58:44 · 337 阅读 · 0 评论