Linux学习-进程

这篇博客详细介绍了Linux中的进程概念,包括进程的定义、内核如何管理进程、进程间的服务,以及如何创建、控制和管理进程。讨论了进程的生命周期,如死亡、僵尸进程、孤儿进程和init进程的作用。还讲解了前台与后台进程的区别,作业控制、挂起、恢复和显示进程信息的方法,以及如何使用kill和nice命令来管理和终止进程。
摘要由CSDN通过智能技术生成

正在学习Linux,记录一下学习历程。奋斗


定义

进程:一个正在执行或准备执行的程序。

更精确地讲,进程就是一个加载到内存中正在执行或准备执行的程序,再加上程序所需的数据,以及跟踪管理程序状态所需的各种信息。


内核管理进程

所有的进程都由内核管理,内核是操作系统的核心部分。

当进程创建时,内核赋予其一个唯一的标识号,这个标识号称为进程ID或PID。为了跟踪管理系统中的所有进程,内核维护了一个进程表。按照PID索引,每个进程再进程表中有一个条目。进程表中的条目除了PID,还包含有描述及管理进程所需的信息。

系统中有许多进程,有一些进程是由用户运行的程序,但是,大多数进程是自动启动的,再后台执行任务。

这些进程需要共享系统的资源:处理器,内存,I/O设备,网络连接等。

为了管理这样一个复杂的工作负荷,内核提供了一个复杂的调度服务,称为调度器。

调度器一直维护着一个所有正在等待执行的进程的列表。通过使用特定的算法,调度器每次选择一个进程,给予这个进程再一个短暂的时间间隔(称为时间片)中运行的机会。(在多处理系统中,调度器可以一次选择多个进程)

每次进程结束时间片时,内核需要中断进程。内核保存每个被中断进程的数据(如程序中下一条指令的位置,环境的副本等)。当该进程再次启动时,它能够在中断处继续执行。


内核为进程提供服务

内核为进程提供基本的服务:

1. 内存管理(虚拟内存管理,包括分页)

2. 进程管理(进程创建,终止,调度)

3. 进程间通信(本地,网络)

4. 输入/输出(通过设备驱动程序,即与物理设备时间通信的程序)

5. 文件管理

6. 安全和访问控制

7. 网络访问(如TCP/IP)

当进程需要内核提供服务时,它就通过系统调用发送请求。

如:

进程使用系统调用初始化I/O操作。

当编写程序时,系统调用的使用方法取决于所使用的编程语言。如在C程序中,使用的是标准库中的函数。


创建&使用进程

常用的系统调用
fork 创建当前进程的一个副本
wait 等待另一个进程结束执行
exec 在当前进程中执行一个新进程
exit 终止当前进程
kill 向另一个进程发送一个信号

以shell为例:

shell是一个充当用户界面和脚本解释器的程序。正是shell才允许你输入命令,以及间接访问内核服务。

一旦shell开始运行,它也是一个进程,是众多系统进程中的一个。

和所有的进程一样,shell也拥有自己的PID(可以通过一个特殊的shell变量$显示),并且在进程表中拥有自己的条目。

内部命令直接由shell解释,不需要创建新的进程。

外部命令需要shell运行一个单独的程序,因此每当运行外部命令时,shell必须创建一个新进程。

shell先使用fork系统调用创建一个新进程,原始进程称为父进程,新进程成为子进程。一旦进程分叉(fork)成功

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值