进程管理

对于计算机系统而言,操作系统充当着基石的作用,它是连接计算机底层硬件与上层应用软件的桥梁,控制其他程序的运行,并且管理系统相关资源,同时提供配套的系统软件支持。



1、进程与线程

进程:是系统进行资源分配和调度的一个独立单位。

线程:是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。

在实现了线程的操作系统中,进程是资源分配的基本单位,线程是调度的基本单位,是系统并发执行单元。



引入线程主要有以下四个方面的优点:

a.易于调度

b.提高并发性(同一个进程中的多个线程可以并发执行)

c.开销小

d.有利于发挥多处理器的功能



需要注意的是,线程和进程有以下区别

(1)一个线程必定属于也只属于一个进程;一个进程可以拥有多个线程并至少拥有一个线程

(2)属于一个进程的所有线程共享该线程的所有资源,包括打开文件、创建的socket等,不同的进程互相独立

(3)线程间切换代价小;进程间切换代价大

(4)进程是程序的一次执行,线程可以理解为程序中一段程序片段的执行(程序:是一组指令的集合

(5)每个进程都有独立的内存空间,而线程共享其所属进程的内存空间




2、线程同步有哪些机制和方式

同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。

所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。例如Window API函数SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的LRESULT值返回给调用者。
在多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。

线程同步的方式和机制
临界区、互斥量、事件、信号量四种方式
临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别
a.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。


b.互斥量:为协同对一个共享资源的单独访问而设计的。采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享


c.信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目


d.事件: 通过通知操作的方式来保持线程的同步,从而启动后续任务的开始,还可以方便实现对多个线程的优先级比较的操作




3、内核线程和用户线程

根据操作系统内核是否对线程可感知,可以把线程分为内核线程和用户线程。


内核线程建立和销毁都是由操作系统负责、通过系统调用的,操作系统在调度时,参考各进程内的线程运行情况作出调度。

用户线程是不需要内核支持而在用户程序中实现的线程,不依赖于操作系统核心,用户进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户进程。用户线程是不能够被操作系统所感知的。


用户线程的几个优势:可以在不支持线程的操作系统中实现;线程管理代价比内核线程少得多;允许每个线程定制自己的调度算法,线程管理比较灵活;线程能够利用的表空间和堆栈空间比内核线程多;

用户线程的缺点有:同一进程中只能同时有一个线程在运行,如果有一个线程使用了系统调度而阻塞,那么整个进程都会被挂起;页面失效业也会导致整个进程被挂起;

内核线程的优缺点刚好与用户线程相反,实际上,操作系统可以使用混合的方式来实现线程。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值