简述操作系统

本文详细介绍了操作系统的核心概念,包括其特性、程序与进程的区别、状态转换、并发与并行处理、进程间通信方式以及死锁现象。重点讨论了进程、线程和协程在现代IT中的应用,特别是协程在IO密集型服务中的优势和Python中的实现。
摘要由CSDN通过智能技术生成

1.定义与特性

        操作系统用来连接硬件与软件管理系统资源

        操作系统的四大特性:并发性、共享性、虚拟性、异步性:并发与共享是基本特性,且二者互为存在条件;异步是指多个程序并发执行时资源有限,总是走走停停

2.程序与进程

        程序是静态的,是一个可执行文件;进程是动态的,一个程序多次执行对应多个进程。

3.操作系统和进程的状态

        操作系统有两大状态:内核态、用户态;内核态-->用户态:操作系统主动让出CPU;用户态-->内核态:由于中断导致硬件强行转态,夺回CPU使用权。

        进程有五大状态:创建态、就绪态、运行态、阻塞态、终止态;三角关系如图:

4.并发与并行

        并发是指同时处理多个任务,但任一时间片刻只有一个指令在执行,因为切换较快,所以宏观上是同时处理多个请求;

        并行是指任一时间片刻有多个指令在被同时执行,从微观宏观角度上来看都是同时发生的。

4.进程间的通信方式

        共享内存、消息传递、管道通信(半双工,全双工需要两个管道)

5.死锁

        死锁是一组相互竞争资源的线程,互相等待导致“永久“阻塞的现象;

        死锁产生的四个条件:不剥夺资源、请求和保持、循环等待、互斥

6.进程、线程、协程

        进程:资源管理的基本单位;线程:资源调度的基本单位,一个进程可以包含多个线程,比如开启QQ程序后启动一个进程,但是QQ需同时实现聊天、语音、视频等功能,各自为一个线程并发执行。

        线程不单独占有资源,多个线程共享同一个进程的资源,每个进程资源不共享,线程切换成本低,切换进程会导致页切换,效率低。

        协程是轻量级的线程,一个线程有多个协程,python和Go对协程有很大支持。

7.协程出现原因

        如今的web服务器或互联网服务均为IO密集型服务,其瓶颈不在于CPU处理速度,而是针对高并发、多连接下的数据读写问题,这就需要协程:若用线程-->高并发下会有大量IO等待,使线程被频繁挂起和执行,且线程占用资源有可能互斥;若用进程-->存在进程切换,成本极高,且进程间资源不共享,需额外引入进程通信机制。

        线程调度由内核决定,线程切换涉及到用户态和内核态的转换,开销较多;

        协程调度由用户自己控制,不存在切换开销问题。

        python2.5中用yield/send实现协程

        python3.5之后用async/await实现协程


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值