当前位置:首页 > 芯闻号 > 充电吧
[导读]在学习Linux系统中,我们经常会看到多用户这个词,你了解Linux系统多用户的特点么?这里为你介绍Linux系统多用户的特点。多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例

在学习Linux系统中,我们经常会看到多用户这个词,你了解Linux系统多用户的特点么?这里为你介绍Linux系统多用户的特点。多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。因此多用户特性变成了衡量操作系统好坏的重要标准,如何保障用户公平的使用系统也成了系统设计者必须要考虑的问题。

为了实现多用户特性,Linux系统将进程的生存周期划分为4种状态: 
(1)进程正在用户态下执行;

(2)进程正在核心态下执行;

(3)进程未正在执行,但是它已准备好——一旦调度程序选中了它,它就可以投入运行。很多进程可以处于这一状态,而调度算法决定哪个进程将成为下一个执行的进程;

(4)进程正在睡眠。

4种状态的转换并不是任意的,而是一个有向图。状态转换图如下所示:

因为任何时刻一个处理机仅能执行一个进程,所以至多有一个进程可以处在第一种状态和第二种状态。这两个状态相应于两种执行态:用户态和核心态。划分这两个级别主要是对系统提供保护,核心态可以执行一些特权指令和进入用户态,而用户态则不能。核心态与用户态的划分为Linux多用户特性提供了保证。

Linux中大部分的系统调用包含在Linux的libc库中,通过libc调用方法可以调用这些系统调用。因此,当用户进程需要使用系统资源时(如文件、显示器输出、打印机输出等),会通过调用标准C函数库中的函数实现相应功能(如open打开文件、printf进行显示器输出等)。系统调用的激活有两种方法:system_call函数和lcall7调用门(call gate)。还有一种syscall函数,是通过调用lcall7实现的,所以不算作一种特有的方法。对于内部代码来说,system_call是所有系统调用的入口点,lcall7用来支持iBCS2(Inter二进制兼容规范标准的版本2,这里不作讨论)。用户进程通过libc激活system_call,该libc会把自己希望传递的参数装载到CPU寄存器中,并触发0x80软件中断,即Int $0x80。这个过程检查系统调用号,这个号码告诉内核进程请求哪种服务。然后,它查看系统调用表(sys_call_table)找到所调用的内核函数入口地址。接着,就调用函数完成相应功能,等返回后,做一些系统检查,最后返回到进程(或到其他进程,如果这个进程时间用尽)。这便是用户进程进行系统调用的整体过程。

在一个分时系统中如Linux, 几个进程能同时进行,并且它们可能都进行了系统调用。内核将通过禁止任意的上下文切换和控制中断的发生保护核心态下运行的一致性。仅当进程从“核心态运行 ”状态转移到“在内存中睡眠”状态时,内核才允许上下文切换。在核心态下运行的进程不能被其他进程所抢占,因此内核有时被称为不可抢先的(non-preemptive),尽管内核也并不抢占用户态下的进程。由于处理系统调用之前的数据是准备好的,所以在系统调用的过程中不会出现死锁状态。又因为内核处于不可抢先状态,所以内核可保持它的数据结构一致性,从而解决了互斥(mutual exclusion)问题——保证在任何时刻至多一个进程执行临界区代码。

举个例子,设有三个用户进程A、B、C同时进行系统调用函数。进程睡眠的条件是临界区处于上锁状态。在任一时刻只能有一个进程在执行,它发现临界区是上了锁的,就在临界区变为开锁的状态的事件上等待。终于,临界区的锁解开了,所有的等待的进程被唤醒并进入“就绪”状态。内核最终选择一个进程(比如B)执行。进程B发现临界区处于开锁状态,于是为临界区上锁,并且继续执行。如果后来进程B在为临界区解锁之前再次去睡眠(例如等候I/O操作的完成),则内核能调度其他进程去运行。如果它选择了进程A,进程A发现临界区处于上锁状态,那么它就再次去睡眠。进程C也做同样的事情。最后,进程B醒来并为缓冲区解锁,允许进程A也允许进程C存 取缓冲区。因此,保证了至多一个进程能获得资源的存取。再此期间,进程的睡眠与唤醒过程应被考虑成“原子的”:一个进程瞬时地进入睡眠状态,并停留在那儿 直至它被唤醒。在它睡眠之后,内核调度另一个进程去运行,并切换后者的上下文。由此可见,临界区在任何时刻只有至多一个进程在执行。

总体说来Linux实现多用户特性的关键在于,将所有系统调用在将数据准备好后通过一个接口(system_call) 进入核心态,由核心态进行权限检查控制,并且保证资源的独占访问。在表面上看,系统调用就合其他的函数调用一样,只要结果符合预计的情况,应用程序就不能 确定是否真正使用了内核,从而达到核心态切换对用户层透明的目的。这样的过程也就保证了,每个用户进程对资源操作的互不影响。从而实现了Linux系统的多用户特性。

希望本文对于Linux系统多用户的特点的介绍,能对你有所帮助。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭