操作系统----临界区,临界资源,互斥量,互斥对象
目录
先来下个结论,临界区和临界资源是用户模式中的线程同步中的概念;互斥量和互斥对象是内核模式中的线程同步的概念。
用户模式和内核模式
用户模式,也被称为用户空间,是 Linux 系统中应用程序运行的模式。在用户模式下,应用程序与用户交互,接收用户输入,并执行相应的操作。用户模式运行的应用程序受到操作系统的限制相对较少,可以自由地使用系统资源。但是,用户模式下的应用程序不能直接访问系统硬件资源和系统数据,需要通过系统调用接口向操作系统请求服务。而内核模式,也被称为核心空间,是 Linux 系统中操作系统运行的模式。在内核模式下,操作系统处理系统级别的任务,例如管理硬件资源、调度进程、分配内存等。内核模式运行的操作系统具有更高的权限,可以访问系统中的所有资源。内核模式下的操作系统还可以通过驱动程序接口向硬件设备请求服务。
区别和联系:
1.权限
用户模式下的应用程序运行在较低的权限级别,无法直接访问系统资源和硬件设备。而内核模式下的操作系统具有更高的权限,可以访问系统中的所有资源。这种权限划分可以有效地保护系统安全,防止应用程序滥用系统资源。
2.资源访问
用户模式下的应用程序无法直接访问系统硬件资源,需要通过系统调用接口向操作系统请求服务。操作系统在内核模式下处理系统级别的任务,例如管理硬件资源,因此可以访问系统硬件资源。内核模式下的操作系统还可以通过驱动程序接口向硬件设备请求服务。
3.运行环境
用户模式下的应用程序运行在用户空间,与用户交互,接收用户输入,并执行相应的操作。内核模式下的操作系统运行在核心空间,处理系统级别的任务,不与用户直接交互。这种运行环境的划分可以有效地降低应用程序与操作系统之间的耦合度,提高系统的可维护性和可扩展性。
用户模式中的线程同步
临界资源:
临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。
临界区:
每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他进程进入。不论是硬件临界资源还是软件临界资源,多个进程必须互斥的对它进行访问。多个进程涉及到同一个临界资源的的临界区称为相关临界区。使用临界区时,一般不允许其运行时间过长,只要运行在临界区的线程还没有离开,其他所有进入此临界区的线程都会被挂起而进入等待状态,并在一定程度上影响程序的运行性能。
进程进入临界区的调度原则:
①空闲让进:如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
②忙则等待:任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
③有限等待:进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。
④让权等待:如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
内核模式中的线程同步
互斥对象:
互斥对象能够确保线程拥有对单个资源的互斥访问权。互斥对象包含一个使用数量、一个线程ID、一个计数器:其中ID标识了当前哪个线程拥有互斥对象,计数器用于表明该线程拥有互斥对象的次数。当该线程拥有互斥对象的次数为0时,表明该线程释放了互斥对象的所有权,互斥对象处于有信号状态,这样其它线程才可以主动去获得互斥对象的所有权。
互斥量:
互斥量跟临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。互斥量比临界区复杂。由于互斥量可以命名,因此使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
两者线程同步的区别
互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,但是速度较慢
临界区属于在用户模式下,只能在同一应用程序不同线程中实现同步,同步速度较快,但是很容易进入死锁状态,因为在等待进入临界区时无法设定超时值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!