多任务原理

1、什么是多任务?

多个任务同时运行在同一个操作系统上,这种机制就是多任务。现在的操作系统大多都是采用多任务。

2、多任务的实现机制
2.1 串行:

多个任务依次执行,前面的任务不完成后面的任务就无法开启

2.2 并行:

多个任务同时执行,并行系统需要有多个CPU的支持,一旦有有个新的任务产生,就会将这个任务放在一个cpu上执行,多个任务同时可以在多个cpu上执行;注意一个CPU在同一时刻只能执行一个任务。

2.3 并发:

多个任务在同一个cpu上以时间片为单位交替执行;例如:一个操作系统中同时打开微信、QQ、默默、Office等,并发执行过程如下,微信执行1ns,然后切换QQ执行1ns,然后切换默默执行1ns、然后切换Office执行1ns,然后再切到微信,然后…这个过程中如果某个程序执行完,就会退出这个队列,由于这个切换时间片非常短,我们在宏观上几乎感知不到,就会认为这些程序在同时执行。其实这些程序是一个极小的时间片为单位进行cpu的分时复用。

3、多任务的实现技术
3.1 多进程

什么是进程?
如果一个程序运行起来,操作系统首先会给这个程序创建一个或者若干个进程,一个进程包含进程id、机器源码、资源(内存资源和I/O)
扩展程序执行的过程:首先一个程序打开以后,操作系统首先会把这个程序的机器源码拷贝到内存中(在内存的代码段),然后给这个程序创建一个进程(加一个进程id),然年从代码段中机器源码中找main函数,给main函数开辟内存空间(main函数中的变量占多大空间就开辟多大,这个空间在栈区),然后分配I/O资源,然后让这个进程去和其他进程并发的抢占CPU资源,一旦抢占到cpu就可以执行;
如果在主进程完成主线任务的过程中出现某些复杂的操作(例如:访问外存、请求网络等)这些复杂操作往往比较耗时,我们为了不使这些耗时操作阻塞主进程任务的执行可以为其开辟一个或者若干个子进程去和主进程并发执行。

3.2多线程

现在在进行程序设计的时候大多采用多线程,进程是操作系统分配资源的基本单位,进程之间是相互隔离的(两个进程分配的资源不能共享),一个进程无法访问另外一个进程,进程的管理都要依赖于操作系统,进程的切换需要不断的分配与回收资源。由于多进程存在以上麻烦,所以采取多线程来处理多任务,线程是进程的子单位。一个进程中可以包含若干个线程。
如果程序设计采用多线程机制,程序运行起来以后,操作系统会为其创建一个进程,通过进程来分配内存和I/O等资源,然后在进程中创建一个主线程来抢占CPU资源,如果遇到了复杂的操作,主线程中会创建若干个子线程,让他们和主线程以及其他进线程一起并发执行。同一个进程内部多个线程之间都是使用进程的内存与I/O资源,而且多个线程之间是可以相互通信的,从而和高效的完成多任务。

3.3 协程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值