志在指尖
用双手敲打未来

linux系统编程(linux系统界面介绍)

linux系统编程

咱们平时写的C语言代码,经过编译器编译,最终它会成为一个可履行程序,当这个可履行程序运转起来后(没有结束之前),它就成为了一个进程。
程序是寄存在存储介质上的一个可履行文件,而进程是程序履行的进程。进程的状况是变化的,其包括进程的创立、调度和消亡。程序是静态的,进程是动态的。
在Linux体系中,操作体系是经过进程去完结一个一个的使命,进程是办理事务的根本单元。进程具有自己独立的处理环境(如:当时需求用到哪些环境变量,程序运转的目录在哪,当时是哪个用户在运转此程序等)和体系资源(如:处理器CPU占用率、存储器、I/O设备、数据、程序)。咱们能够这么了解,公司相当于操作体系,部分相当于进程,公司经过部分来办理(体系经过进程办理),关于各个部分,每个部分有各自的资源,如人员、电脑设备、打印机等。
二、进程状况
咱们现在的电脑根本上都是多使命,咱们聊着QQ的时候,同时能够看着视频,这儿相当于QQ和视频两个程序同时运转着(两个进程)。前期的时候,电脑的CPU是单核的(单核理论上只运转操作一个使命),那它是怎么做到多使命的呢?这就涉及到进程的调度策略。现在给咱们举这么一个比如,有A,B,C三个进程,在咱们单CPU的情况下,每一个时刻只有一个进程在运转,假如A运转完,B运转,B运转完,C运转,C运转完,A运转,而CPU的运算速度足够快,A两次运转时刻间隔足够短,从宏观上就咱们就看到A,B,C如同同时运转,这便是完成单CPU运转多个使命的核心原理,经过时刻片轮询调度策略完成多使命(更多概况,请看《Linux进程调度浅析》)。
从上面的比如,咱们能够得知,关于A进程而言,有时候在运转,有时候没有运转,两个状况不一样,所以,进程是有状况的,同时,状况是能够彼此进行转化的,从履行的状况转化为不履行的状况,这儿,咱们能够把进程运转的整个生命周期简略划分为三种状况(实际上不指这三种状况):安排妥当态、履行态、等候态。
安排妥当态:
进程现已具备履行的悉数条件,正在等候分配CPU的处理时刻。
履行态:
该进程正在占用CPU运转。
等候态:
进程因不具备某些履行条件而暂时无法持续履行的状况。
这儿需求注意,安排妥当态和等候态都是不履行,但它们是有差异的,安排妥当态是指满足条件,时刻没到,等候态是不满足条件。
相同的,进程的这三种状况能够彼此转化:
Linux体系编程之进程介绍Linux体系编程之进程介绍
履行态–>等候态:
正在履行的进程因等候某种事情发生而无法持续履行时,便从履行状况变成等候状况
等候态–>安排妥当态:
处于等候态的进程,若其等候的事情发生,所以进程由等候状况变成安排妥当态
安排妥当态–>履行态:
当安排妥当态的进程所等候的cpu时刻片一到来,进程就会从安排妥当态变成履行态
履行态–>安排妥当态:
处于履行状况的进程在其履行进程中,因分配给它的一个时刻片已用完而不得不让出cpu,所以进程从履行状况转变成安排妥当状况
为了让咱们愈加明晰地了解三种状况的转化,给咱们举一个lh买火车票的比如。
lh匆忙地赶去火车站买火车票,太着急了,到了售票厅才发现忘记带身份证,这时候,就算lh排队也没用,因为lh不具备买票的条件(没带身份证),这时候的lh归于等候态。
lh给它目标打电话,让她把身份证带过来,等会,身份证送到了,这时候,lh能够去排队买票了,仅仅时刻到,lh就能够买票了,这时,lh归于安排妥当态。而这进程是由等候态转化到安排妥当态。
等了10分钟,终于到lh了,lh开端买票,这时候,lh归于履行态。而这进程是由安排妥当态转化为履行态。
而在买票的进程中,lh的目标打电话给他,让lh也帮她买一张火车票,可是,lh没有她目标的身份证,接着,lh持续等他目标送身份证,这时候,lh由履行态转化为等候态。
假如是这么一种情况,lh买火车票是给公司的同事买的(需求买100多张票),在买着票的进程中(履行态),后边还有很多人在排队,后边排队的人必定不爽,这时售票员就说,20分钟后,假如你还没处理完,请你到后边排队。成果,lh花了20分钟还是没有处理完,所以,乖乖地到后边重新排队,这时候,lh由履行态转化为安排妥当态。
三、进程操控块
关于操作体系而言,它需求操控很多进程,同时,每个进程都有不同的状况,体系怎么知道A履行完到B履行而不是C?体系怎么和谐操控进程呢?
当咱们运转一个程序使它成为一个进程时,体系会拓荒一段内存空间寄存与此进程相关的数据信息,而这个数据信息是经过结构体(task_struct,ubuntu12.04中翻开/usr/src/linux-headers-3.2.0-23/include/linux/sched.h能够找到task_struct的界说)来寄存,咱们把这个寄存进程相关数据信息的结构体称为进程操控块。
操作体系便是经过这个进程操控块来操作操控进程。更多概况,请看《Linux进程办理》。
进程操控块是操作体系中最重要的记载型数据结构。进程操控块记载了用于描述进程进展情况及操控进程运转所需的悉数信息,它是进程存在的仅有标志。进程操控块里有很多信息,其中比较重要的是进程号,至于其他的一些信息咱们不在这具体讨论。
四、进程号
每个进程都由一个进程号来标识,其类型为pid_t(无符号整型),进程号的规模:0~32767。进程号总是仅有的,但进程号能够重用。当一个进程停止后,其进程号就能够再次使用。
Linux体系编程之进程介绍Linux体系编程之进程介绍
所以,在Linux下面所有的进程都由init进程直接或许直接创立。
接下来,再给咱们介绍三个不同的进程号。
进程号(PID):
标识进程的一个非负整型数。
父进程号(PPID):
任何进程(除init进程)都是由另一个进程创立,该进程称为被创立进程的父进程,对应的进程号称为父进程号(PPID)。如,A进程创立了B进程,A的进程号便是B进程的父进程号。
进程组号(PGID):
进程组是一个或多个进程的集合。他们之间彼此相关,进程组能够接纳同一终端的各种信号,相关的进程有一个进程组号(PGID)。这个进程有点类似于QQ群,组相当于QQ群,各个进程相当于各个老友,把各个老友都拉入这个QQ群里,主要是方便办理,特别是通知某些事时,只要在群里吼一声,所有人都收到,简略粗犷。可是,这个进程组号和QQ群号是有点差异的,默认的情况下,当时的进程号会作为当时的进程组号。
五、进程号操作函数
Linux操作体系供给了三个取得进程号的函数getpid()、getppid()、getpgid()。
所需头文件:
include
include
pid_tgetpid(void);
功用:
获取本进程号(PID)
参数:无
回来值:本进程号
pid_tgetppid(void);
功用:获取调用此函数的进程的父进程号(PPID)
参数:无
回来值:
pid_tgetpgid(pid_tpid);
功用:获取进程组号(PGID)
参数:pid:进程号
回来值:参数为0时回来当时进程组号,否则回来参数指定的进程的进程组号
示例代码如下:
include
include
include
intmain(intargc,char*argv[])
{
pid_tpid,ppid,pgid;
pid=getpid();
printf(“pid=%d”,pid);
ppid=getppid();
printf(“ppid=%d”,ppid);
pgid=getpgid(pid);
printf(“pgid=%d”,pgid);
return0;
}

linux
linux系统界面介绍

操作系统关于咱们而言有着非常重要的效果,它是办理计算机软硬件资源的一个途径,没有它任何计算机都无法工作。现在市场上干流的操作系统有许多,其间包括Windows、Unix、Linux等,那么Linux是什么操作系统?Linux特征是什么?以下是详细的介绍。
Linux是什么操作系统?
Linux是一套免费运用和自由传播的类Unix操作系统,是一个多用户、多任务、支撑多线程和多CPU的操作系统。它能工作首要的Unix工具软件、应用程序和网络协议,支撑32位和64位硬件。Linux操作系统承继了Unix以网络为中心的设计思维,是一个性能安稳的多用户网络操作系统。
Linux特征是什么?
Linux操作系统特征有许多,以下为详细介绍:
①安稳的系统:Linux非常安稳,连续工作一年以上不曾宕机是很平常的工作,Linux有许多电脑高手在运用,维护者许多、更新维护快,而Windows则是所有人都会用,且不开源多任务。
②多用户系统:在一个Linux主机上规划出不同等级的用户,每个用户登录时工作环境可以不同,还答应不同用户在同一时间登录主机以运用主机的资源。
③用户组规划:在Linux机器上,文件可以分为可读可写可执行三类。此外,这些特点还可以分为三类:文件具有者、文件所属用户组、其他非具有者与用户组者,关于项目或许其他项目开发者具有良好的保密性。
④占用资源少:现在市场上任何一款个人计算机都可以到达运用Linux建立一个服务上百人以上的主机可定制取舍,移植到嵌入式途径,可选择多种图形用户界面。
⑤模块化程序:Linux内核设计非常精巧,分红进程调度、内存办理、进程间通信、虚拟文件系统和网络接口五大部分;其一起的模块机制可根据用户的需求,实时地将某些模块刺进或从内核中移走,使得Linux系统内核可以裁剪得非常细巧。
⑥广泛的硬件支撑:Linux能支撑X86、ARM、MIPS、ALPHA和PowerPC等多种系统结构和微处理器。现在已成功地移植到数十种硬件途径,几乎能工作在所有流行的处理器上。

未经允许不得转载:IT技术网站 » linux系统编程(linux系统界面介绍)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载