操作系统8月份专题
徐明曉
这个作者很懒,什么都没留下…
展开
-
[<死锁专题>]
死锁专题1. 什么是死锁?2. 死锁产生的必要条件?3. 解决死锁的基本方法? 1. 什么是死锁? 死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 如下图所示:如果此时有一个线程 A,已经持有了锁 A,但是试图获取锁 B,线程 B 持有锁 B,而试图获取锁 A,这种情况下就会产生死锁。 2. 死锁产生的必要条件? 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。 请求和保持条件:当进程因请求原创 2020-08-06 08:43:59 · 128 阅读 · 0 评论 -
线程同步的四种方式
原文链接:https://blog.csdn.net/qq_40261882/article/details/100538711 1、临界区: 通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。它并不是核心对象,不是属于操作系统维护的,而是属于进程维护的。 总结下关键段: 1)关.原创 2020-08-06 08:42:42 · 1334 阅读 · 0 评论 -
进程的调度算法有哪些?
先来先服务调度算法:先来先服务调度算法是一种最简单的调度算法,也称为先进先出或严格排队方案。当每个进程就绪后,它加入就绪队列。当前正运行的进程停止执行,选择在就绪队列中存在时间最长的进程运行。该算法既可以用于作业调度,也可以用于进程调度。先来先去服务比较适合于常作业(进程),而不利于段作业(进程)。 时间片轮转调度算法:时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间.原创 2020-08-06 08:29:56 · 4054 阅读 · 0 评论 -
信号和信号量有什么区别?
信号:是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 信号量:信号量是一个特殊的变量,它的本质是计数器,信号量里面记录了临界资源的数目,有多少数目,信号量的值就为多少,进程对其访问都是原子操作(pv操作,p:占用资源,v:释放资源)。它的作用就是,调协进程对共享资源的访问,让一个临界区同一时间只有一个进程在访问它。 所以它们两的区别也就显而易见了,信号是通知进程产生了某个事件,信号量是用来同步进程的(用来调协进程对共享资源的访问的) ...原创 2020-08-06 08:29:18 · 3061 阅读 · 0 评论 -
讲一下进程间通讯方式?
无名管道(PIPE):管道是一种半双工的通信方式(数据只能单向流动),而且只能在具有亲缘关系的进程(即只能在父子进程和兄弟进程之间通讯)间使用。进程的亲缘关系通常是指父子进程关系。 命名管道(FIFO):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 信号(signal)信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身. 信号量(semaphore)信号量是个计数器记录临界资源的个数,用于多进程对共享数据的访问。进..原创 2020-08-06 08:28:45 · 108 阅读 · 0 评论 -
讲一下线程状态并且解释一下?
操作系统层面下,分为五种状态: 新建(NEW):新创建了一个线程对象,还未与操作系统线程关联。 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了线程对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片1(timeslice) ,执行程序代码。 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu times原创 2020-08-06 08:27:19 · 166 阅读 · 0 评论 -
讲一下线程和进程的区别和联系?
link1,link2 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等) 线程 一个进程之内可以分为一到多个线程。一个线程就是一个.原创 2020-08-05 15:48:48 · 509 阅读 · 0 评论 -
BIO,NIO,AIO,多路复用IO?
原文链接:https://blog.csdn.net/historyasamirror/article/details/5778378 1. 什么是IO? 在计算机系统中I/O就是输入(Input)和输出(Output)的意思,只要具有输入输出类型的交互系统都可以认为是I/O系统。 2. 如何理解IO过程? 对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的进程(process )(or thread),另一个就是系统内核(kernel)。当一个read.原创 2020-08-05 15:48:10 · 177 阅读 · 0 评论 -
同步、异步、阻塞、非阻塞
https://blog.csdn.net/historyasamirror/article/details/5778378 同步 & 异步:同步与异步是针对多个事件(线程/进程)来说的。 同步:如果事件A需要等待事件B的完成才能完成,这种串行执行机制可以说是同步的,这是一种可靠的任务序列,要么都成功,要么都失败。 异步:如果事件B的执行不需要依赖事件A的完成结果,这种并行的执行机制可以说是异步的。事件B不确定事件A是否真正完成,所以是不可靠的任务序列。 区别:同步异步可以理解为多个事件的执行方式和原创 2020-08-05 15:47:39 · 129 阅读 · 0 评论 -
讲一下并发和并行?
并行是指两个或者多个事件在同一时刻发生: 而并发是指两个或多个事件在同一时间线内间隔发生: 单核 cpu 下,线程实际还是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的 。总结为一句话就是: 微观串行,宏观并行 。 并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求原创 2020-08-05 15:47:08 · 1884 阅读 · 0 评论