进程的基本概念

 

说明:只供学习交流,转载请注明出处

 

进程的定义:

进程是一个具有一定独立功能的程序的一次运行活动。

 

进程和程序的区别:

程序是静态的,进程是动态的,程序运行起来就是进程。进程具有的特点是:

1):动态性;

2):并发性;

3):独立性;

4):异步性;

 

进程分类

Linux系统中,根据进程的特点,进程可分为3大类:交互进程、批处理进程和守护进程

 

交互进程:交互进程是由Shell启动的进程,其既可以在前台运行,也可以运行在后台。交互进程在执行过程中,要求与用户进行交互操作。简单来说,就是用户需要给出某些参数或信息进程才能继续执行。

 

批处理进程:批处理进程与windows中原来的批处理很类似,是一个进行序列。该进程负责按顺序启动其他的进程。

 

守护进程:守护进程是执行特定功能或者执行系统相关任务的后台进程。守护进程只是一个特殊的进程,不是内核的组成部分。许多的守护进程在系统启动时启动,直到系统关闭时停止运行。而某些守护进程只是在需要的时候才启动,例如,FTPApache服务等,可以在需要的时候才启动该服务。

进程三态:

注意:进程创建以后首先是属于就绪态

 

,虚拟内存:

在安装Linux系统时,除了建立必要的ext3分区外,还需要建立一个交换分区,该分区实际上被用作内存的扩展。系统将暂时不会用到的数据写到交换分区中,在需要的时候再将磁盘中的内容读回内存。这样可以有效的解决内存空间不足的问题。这一内存扩展机制被称为虚拟内存。

 

Linux系统中,每个进程运行在虚拟内存空间中。虚拟内存技术用于解决多进程同时运行时内存空间不足的问题。除此之外,虚拟内存技术还提供了以下的几个功能:

 

1):巨大的寻址空间

Linux操作系统采用了虚拟内存管理技术,使得在32位系统上,支持寻址高达4GB的线性地址空间。用户所看到的进程运行地址为虚拟地址,而不是物理地址。4GB的内存空间被分为用户空间和内核空间。用户程序通常情况下只能访问用户空间。用户程序只能通过系统调用才能进入内核空间。与用户空间的内容在进程切换会变化不同,内核空间时由内核进行映射的,因此不会随着进程切换,而发生变化。

 

2):共享虚拟内存

虚拟内存机制保证了每个进程都运行在自己的虚拟地址空间中,但是在某些情况下,不同进程之间还需要进行数据共享。虚拟内存还提供了共享内存功能。共享内存是进程间通信(IPC)的一种方法。通过共享内存,可以实现进程间的数据交换。

 

3):系统保护

系统中的进程运行在自己的虚拟地址空间,这样保证了进程在运行时的稳定性。

 

Linux系统提供了vmstat命令来显示虚拟内存的使用情况。在Bash中输入“vmstat”命令得到如下输出:

vmstat命令不仅仅报告内存的使用情况,还将显示磁盘和CPU的使用情况。因为Linux系统会根据调度策略,将暂时不使用的内存数据保存到交换分区中,这样会导致磁盘读写操作的增加。而磁盘读写速度和CPU、内存之间存在差异,在磁盘读写时,CPU利用率将下降。因此,有必要在显示虚拟内存使用时显示CPU和磁盘的相关信息。vmstat中显示信息的具体情况如下:

 

procs

r:等待获得CPU时间以运行的进程数。

b:处于不可中断休眠的进程数。

 

memory

swpd:已用虚拟内存大小。

free:空闲内存大小。

buff:用作磁盘缓冲的内存大小。

cache:用作缓存的内存大小。

 

swap

si:每秒从磁盘换入的内存大小。

so:每秒从内存写入的磁盘大小。

 

io

bi:每秒从磁盘读取的块数,该数值可以用来表示读磁盘操作的情况。

bo:每秒写入磁盘的块数,该数值可以用来表示写磁盘操作的情况。

 

system

in:每秒中断发生次数。

cs:每秒上下文切换次数。

 

cpu

us:用户程序所占CPU的时间比例,该数值表示了用户进程的繁忙程度。

sy:运行内核代码所占的时间比例。

idCPU空闲时间所占的时间比例。

wa:用于等待I/O操作所占的时间比例。

st:抢占虚拟机运行所占的时间比例。

 

使用vmstat命令可以获得比top命令更详细的系统运行信息。很多LinuxUNIX系统管理员通过vmstat来分析系统使用情况,并根据这些信息来提高系统运行性能。

 

,进程ID

Linux中某个进程出现问题时,可以使用kill命令来杀死该进程。kill命令用到的参数称为进程ID

进程IDPID)Linux系统使用进程IDPID)来标识进程。除了init进程(PID1)外,每个进程都有一个父进程。当父进程早于子进程结束时,子进程变为了“孤儿进程”,将被系统进程(init进程)收养。这时,init进程变为子进程的父进程。每个进程在创建的时候,系统都会分配一个进程ID给该进程。当进程ID到达系统最大值时(<linux/threads.h>中有PID_MAX的定义,该常量表示系统能使用的最大PID数),系统将重新使用最小且当前未使用的PID号。

可以使用ps命令获得当前系统正在运行的进程的PID信息,在shell中输入“ps –aux”命令,可以查看系统正在运行的进程信息,其中包括了进程ID

 

父进程的IDPPID):用于标识父进程。

 

启动进程的用户IDUID:

root用户创建新的用户时,会给每个用户分配一个IDUID)。可以在/etc/passwd文件中查找到用户UID信息。

Linux系统每个进程都有两个IDUIDEUID。当用户登入系统时,系统会将UIDEUID设置成与/etc/passwd文件中的UIDUID用于表示进程的创建者,只有进程的创建者和root用户才有权限对进程进行操作(这些操作是指杀死进程等改变进程状态的操作)。EUID(有效用户标识)用于确定进程在任何给定的时刻,对资源和文件具有访问权限。一般情况下UIDEUID是相同的。但是在某些特殊的情况下,会出现两个标识不同的情况:最典型的例子就是Linux中的passwd命令。passwd命令用于修改用户登录的密码,而用来记录Linux登录密码的文件是/etc/shadow,该文件记录的密码是经过md5计算过的密码,非明文密码。为了安全,除了root用户外,其他用户没有访问该文件的权限。这时出现了一个矛盾:一是出于系统安全考虑,不能让用户查看并修改shadow文件;另一方面,如果用户没有权力访问该文件,就无法修改用户密码。

Linux系统通过setuid来解决这一问题。setuid是一种文件特殊属性,它使得被设置了setuid位的程序无论被哪个用户启动,都自动具有文件拥有者的权限。由于passwd程序的拥有者是root用户,任何用户执行该程序后,该程序的EUID将变成root用户的EUID,而不是执行该程序的UID,这样,普通用户就可以通过passwd命令来访问shadow文件,完成修改密码的操作。

查看/usr/bin/passwd程序的文件属性时,可以看到原来应该显示x(可执行权限)的地方,变成了s,这就意味着程序设置了setuid位。

设置setuid位的命令为“chmod u+s可执行程序”。

 

七,进程互斥:

进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。

 

,临界资源:

操作系统中将一次只允许一个进程访问的资源称为临界资源。

 

九,临界区:

进程中访问临界资源的那段程序代码称为临界区。为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区。

 

十,进程同步:

一组并发进程按一定的顺序执行的过程称为进程间的同步。具有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为消息或事件。

 

十一,进程调度:

概念:

按一定算法,从一组待运行的进程中选出一个来占有CPU运行。

 

调度方式:

•抢占式

•非抢占式

 

调度算法

1):先来先服务调度算法

2):短进程优先调度算法

3):高优先级优先调度算法

4):时间片轮转法

 

十二,死锁:

多个进程因竞争资源而形成一种僵局,若无外力作用,这些进程都将永远不能再向前推进。

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值