
操作系统
操作系统相关知识
holysll
没有在深夜痛哭过的人,不足以谈人生
展开
-
【操作系统知识】多线程、多进程、并发并行、锁的梳理
1. 并发与并行(1) 并发并发是指同一时间间隔内多个任务都在运行,但是并不会在用一时刻同时运行,存在交替执行的情况,因此也经常存在资源竞争德尔情况。线程是并发的,实现的库有threading。(2) 并行并行指的是同一时刻多个任务同时运行,进程是并行的,实现的库有multiprocessing。(3) 并发与并行的应用场景IO密集型操作(程序需要执行较多的读写,请求和回复任务的需要CPU对硬盘、内存进行读写,如爬虫)应使用并发更好,类似于多线程。CPU密集型操作(程序运行需要花原创 2020-07-09 13:38:52 · 666 阅读 · 0 评论 -
【操作系统知识】调度算法
17. 调度算法常见的调度算法总结(1) 先来先服务(FCFS, First Come First Service)先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。(2) 短作业优先(SJF, Shortest Job First)短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法原创 2020-07-09 13:30:30 · 561 阅读 · 0 评论 -
【操作系统知识】线程间通信
9. 线程间通信(1) 互斥锁互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。"""#创建锁mutex = threading.Lock()#锁定mutex.acquire([timeout])#释放mutex.release()"""import thr原创 2020-07-09 13:27:04 · 860 阅读 · 0 评论 -
【操作系统知识】进程间通信
8. 进程间通信Process之间肯定需要通信的,操作系统提供了很多机制来实现进程间的通信。Python的multiprocessing模块包装了底层的机制,提供了Queue/Pipes等多种方式来交换数据。(1) 消息队列Queue简单的理解Queue实现进程间通信的方式,就是使用了操作系统给开辟的一个队列空间,各进程可以把数据放到该队列中,当然也可以从队列中把自己需要的信息取走。Queue/queue模块常用属性属性描述****Queue/queue模块的类***原创 2020-07-09 13:25:10 · 244 阅读 · 0 评论 -
【操作系统知识】python实现协程
7. python实现协程(1) yield + send实现通过“生产者-消费者”模型来看下协程的应用,生产者产生消息后,直接通过yield跳转到消费者开始执行,带消费者执行完毕后,切换回生产者继续生产。# 利用生成器实现协程# 来源:https://juejin.im/post/5d888151f265da03dd3db0f5def consumer(): r = '' while True: n = yield r if not n:原创 2020-07-09 13:23:55 · 236 阅读 · 0 评论 -
【操作系统知识】python实现多线程
6. python实现多线程多任务可以由多进程完成,也可以由一个进程内的多线程完成。线程是操作系统直接支持的执行单元,Python的标准库提供了两个模块_thread(低级模块)和threading(高级模块),大部分情况下选择用threading模块。import timeimport threading# 新线程执行def loop(num): print(f"线程{threading.current_thread().name}正在运行...") n = 0 w原创 2020-07-09 13:22:39 · 226 阅读 · 0 评论 -
【操作系统知识】python实现多进程
5. python实现多进程Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次返回一次,但是fork()调用一次返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回。子进程永远返回0,而父进程返回进程的ID。一个父进程可以fork出多个子进程,所以父进程要记下每个子进程的ID,而子进程只主要调用getppid()就可以拿到父进程的ID。父进程、子进程执行的顺序没有规律,完全取决于操作系统的调度原创 2020-07-09 13:21:28 · 392 阅读 · 0 评论 -
【操作系统知识】进程、线程以及协程间的区别
4. 进程、线程以及协程间的区别线程、进程、协程、锁的总结(1) 进程(process)进程是系统进行资源分配和调度的一个独立的最小单位,它是程序执行的一个实例。程序运行时,系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候,就会为它分配CPU、内存、时间片,程序开始真正运行。进程拥有自己独立的内存空间,进程间数据不共享,因此开销大。进程特征:动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生的,动态消亡的;并发性原创 2020-07-09 13:20:28 · 302 阅读 · 0 评论 -
【Python基础知识库】线程、进程、协程、锁的总结
最近面试老遇到别人问多进程、多线程、协程和锁相关的问题,下面进行总结一下,欢迎各位大佬指教。question1:简单说说多进程、多线程和协程的原理、特点进程: 进程是系统进行资源(CPU、内存、时间等)分配和调度的一个独立的最小的单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为...原创 2019-04-17 01:31:16 · 323 阅读 · 0 评论