Linux下进程基础

程序:由数据和指令组成,是静态的,一般存在于磁盘中,当装载进内存后可被执行。

进程:是正在执行的程序,是动态的,在计算机内存中,包括程序的指令、数据以及程序运行需要的栈、堆、打开的文件等一切资源。

进程的状态:

运行态、可中断睡眠态、不可中断睡眠态、停止态、僵尸态、死亡态。

进程的数据空间:

常量区、静态区、堆区、栈区。

Linux采用虚拟内存机制来管理系统内存,每个进程的地址空间都是虚拟的,通过内存映射表对应物理内存。

段错误是操作系统的一种保护机制,当进程遇到了不可恢复的访存错误时,内核发出信号将该进程杀死。

段错误的原因:
	1. 地址非法。
	2. 权限非法。

查看进程状态的工具:

ps -ef
ps aux
pstree
top
cat /proc

只有前台进程能够接受终端信号。

同一时刻只能有一组前台进程,但是可以有多组后台进程。
进程控制:
fg 将后台进程变为前台
bg 将暂停的进程变为后台执行。
CTL + z 将前台进程暂停。
CTL + c 将前台进程杀死。

进程标识:

Linux使用一个short型的整数作为进程的ID, 范围是0 ~ 32767。

进程创建之后的执行顺序是随机的,也就意味着父进程在创建完子进程后谁先运行是不一定的。

僵尸进程:
当一个进程终止后,系统为了能够让其父进程获得该进程的返回状态,于是会保留关于该进程的一些信息(例如返回状态等),但是此时进程的大部分资源都已经被收回了(指令、堆、栈、打开的文件等绝大部分资源)。此时的进程已经终止,但是未被完全销毁(依然占有PID、taskstruct结构体等少量信息)称为僵尸进程。
僵尸进程的产生条件:
	1.父进程未终止并且没有主动忽略子进程的状态。
	2.子进程先于父进程终止。
僵尸进程的危害:
	1.占用PID资源
	2.占用内存资源。

进程的终止方式

(1) 正常终止
		从main函数返回
		调用exit(标准C库函数)
		调用_exit或_Exit(系统调用)
		最后一个线程从其启动例程返回
		最后一个线程调用pthread_exit

(2) 异常终止
		调用abort
		接收到一个信号并且终止
		最后一个线程对取消请求做处理响应
		
(3) 进程返回
		通常程序运行成功返回0,否则返回非零值。
		在shell中可以使用echo $?  查看进程的返回值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值