linux课件-第7章__进程控制开发

合集下载

chapter07

chapter07
[echo@echo echo]$nohup dir & [1] 613 [echo@echo echo]$nohup: appending output to 'nohup.out'
[1]+ Done nohup.dir [echo@echo echo]$ [echo@echo echo]$ ls #*mail*#1565tBp# Desktop Graphic KDE1.gif RMAIL bin dustbin lsecho nohup.out notmal work [echo@echo echo]$ cat nohup.out #*mail*#1565tBp# Graphic RMAIL Desktop KDE1.git bin nohup.out 7-10 RedHatLinux9基础教程(第2版)
7.3进程控制命令
监视进程运行状态 在用户退出后让进程继续运行 更改进程的优先级 在进程有问题的时候杀死进程
7-6
RedHatLinux9基础教程(第2版)
7.3.1监视进程
报告系统当前的进程状态:ps
# ps [选项]
7-7
RedHatLinux9基础教程(第2版)
ps命令输出字段含义

7-14
RedHatLinux9基础教程(第2版)
小结&习题
思考题 (1)什么是进程? (2)如何显示进程? (3)进程之间具有什么样的关系? (4)什么是多进程和多任务? 上机题 (1)查看系统运行后台进程. (2)如何启动多个进程? (3)如何调整进程的优先级?
7-15
RedHatLinux9基础教程(第2版)
Ctrl+c:终止前台程序 kill :送一个结束进程的信号到某个当前运行 的特定进程,从而结束进程

《Linux培训》PPT课件

《Linux培训》PPT课件

端口是网络通信的接口,套接字是端口的 高级抽象,提供了网络通信的API。
TCP/IP协议栈
DNS与域名解析
TCP/IP协议栈是互联网的基础,包括应用 层、传输层、网络层和链路层。
DNS是域名系统的缩写,用于将域名解析 为IP地址。
Linux网络配置
01
ቤተ መጻሕፍቲ ባይዱ02
03
04
网络接口配置
配置网络接口的参数,如IP地 址、子网掩码、网关等。
Linux的特点和优势
可定制性
由于源代码公开,用户可以根据 自己的需求定制和优化Linux系统 。
跨平台性
Linux可以在多种硬件平台上运行 ,包括PC、服务器、嵌入式设备 等。
Linux的发行版和选择
在此添加您的文本17字
主流发行版
在此添加您的文本16字
Debian:以社区为基础的开源项目,强调稳定性和可靠 性。
Linux系统操作效率。
03
Shell脚本调试与优化
了解Shell脚本调试方法,学习如何优化脚本性能,提高脚本执行效率

Python编程在Linux中的应用
Python基础语法
学习Python语言的基本语法、数据类型、函数等,掌握Python编程基础。
Python标准库与第三方库
熟悉Python标准库中的常用模块,了解第三方库的获取与安装方法,扩展Python应用能 力。

磁盘管理
查看磁盘使用情况,进 行磁盘分区、格式化等
操作。
网络管理
配置网络接口、路由表 和网络服务,进行网络
故障排查等。
系统性能监控
使用系统监控工具进行 性能分析和调优,如
CPU使用率、内存占用 率、磁盘I/O等。

Linux入门学习大全超详细 ppt课件

Linux入门学习大全超详细 ppt课件

Linux操作系统
(4) 使我们的工作更加方便。Linux为广大用户提供 了一个在家里学习和使用Unix操作系统的机会。尽管 Linux只是由计算机爱好者们开发的,但它在很多方面 还是相当稳定的,从而为用户学习和使用目前世界上 最流行的Unix操作系统提供了便利的机会。现在有许 多CD-ROM供应商和软件公司(如RedHat、红旗和 Turbo Linux等)支持Linux操作系统。Linux成为Unix系 统在个人计算机上的一个代用品,并能用于替代那些 较为昂贵的系统。因此,如果一个用户在公司上班时 在Unix系统上编程,或者在工作中是一位Unix的系统 管理员,他就可以在家里安装一套Unix的兼容系统, 即Linux系统,在家中使用Linux就能够完成一些工作任 务。
Linux操作系统
(3) 丰富的应用软件。Linux不仅为用户提供了强大 的操作系统功能,而且还提供了丰富的应用软件。用 户不但可以从Internet上下载Linux及其源代码,而且还 可以从Internet上下载许多Linux的应用程序。可以说, Linux本身包含的应用程序以及移植到Linux上的应用程 序包罗万象,任何一位用户都能从有关Linux的网站上 找到适合自己特殊需要的应用程序及其源代码,这样 用户就可以根据自己的需要下载源代码,以便修改和 扩充操作系统或应用程序的功能。这对Windows 2000、 Windows 98、MS-DOS或OS/2等商品化操作系统来说 是无法做到的。
(3) 交互程序:允许用户发送信息或接收来自其他 用户的信息。交互程序是用户与机器的信息接口。 Linux是一个多用户系统,它必须和所有的用户保持联 系。信息可以由系统上的不同用户发送或接收。信息 的发送有两种方式:一种方式是与其他用户一对一地 进行对话,另一种方式是一个用户对多个用户同时进 行通讯,即所谓广播式通讯。

Linux系统编程之进程控制(进程创建、终止、等待及替换)

Linux系统编程之进程控制(进程创建、终止、等待及替换)

Linux系统编程之进程控制(进程创建、终⽌、等待及替换)进程创建在上⼀节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建⼀个新进程。

那么,系统是如何创建⼀个新进程的呢?这就需要我们更深⼊的剖析fork 函数。

1.1 fork函数的返回值调⽤fork创建进程时,原进程为⽗进程,新进程为⼦进程。

运⾏man fork后,我们可以看到如下信息:#include <unistd.h>pid_t fork(void);fork函数有两个返回值,⼦进程中返回0,⽗进程返回⼦进程pid,如果创建失败则返回-1。

实际上,当我们调⽤fork后,系统内核将会做:分配新的内存块和内核数据结构(如task_struct)给⼦进程将⽗进程的部分数据结构内容拷贝⾄⼦进程添加⼦进程到系统进程列表中fork返回,开始调度1.2 写时拷贝在创建进程的过程中,默认情况下,⽗⼦进程共享代码,但是数据是各⾃私有⼀份的。

如果⽗⼦只需要对数据进⾏读取,那么⼤多数的数据是不需要私有的。

这⾥有三点需要注意:第⼀,为什么⼦进程也会从fork之后开始执⾏?因为⽗⼦进程是共享代码的,在给⼦进程创建PCB时,⼦进程PCB中的⼤多数数据是⽗进程的拷贝,这⾥⾯就包括了程序计数器(PC)。

由于PC中的数据是即将执⾏的下⼀条指令的地址,所以当fork返回之后,⼦进程会和⽗进程⼀样,都执⾏fork之后的代码。

第⼆,创建进程时,⼦进程需要拷贝⽗进程所有的数据吗?⽗进程的数据有很多,但并不是所有的数据都要⽴马使⽤,因此并不是所有的数据都进⾏拷贝。

⼀般情况下,只有当⽗进程或者⼦进程对某些数据进⾏写操作时,操作系统才会从内存中申请内存块,将新的数据拷写⼊申请的内存块中,并且更改页表对应的页表项,这就是写时拷贝。

原理如下图所⽰:第三,为什么数据要各⾃私有?这是因为进程具有独⽴性,每个进程的运⾏不能⼲扰彼此。

1.3 fork函数的⽤法及其调⽤失败的原因fork函数的⽤法:⼀个⽗进程希望复制⾃⼰,通过条件判断,使⽗⼦进程分流同时执⾏不同的代码段。

Linux 系统第7章 进程管理

Linux 系统第7章 进程管理

• 格式:crontab [参数] 文件名
• 参数:
-u 用户名
//指定具体用户的cron文件
-r
//删除用户的crontab文件
• 实 -例l :
//显示用户的cron文件
-e# crontab /ro/o/编t/r辑oo用t.户cr的oncrontab文件
//建立当前标准格式用户crontab文件
• 系统在指定时间运行指定的程序,可用at, batch和cron调度。
7-2 进程管理的常用命令
1、ps • 功能:静态显示系统进程信息 • 格式:ps [参数] • 参数: -a //显示所有进程(不包括没有终端的进程) -u //显示用户名和启动时间 -x //显示没有终端的进程 -e //显示所有进程(不显示进程状态)
………………….. 说明:以上输出的信息包括
USER 进程的启动用户 PID 进程号(进程的唯一标识) %CPU 占CPU的百分比 %MEM 占用内存百分比 VSZ 占用的虚拟内存大小 RSS 占用的物理内存大小 TTY 进程的工作终端(?表示没有终端) STAT 进程的状态:
R: 正在执行中 S: 休眠静止状态 T: 暂停执行 Z:僵死状态 Time 占用的cpu的时间 Command 运行的程序
• 实例: # ps # ps –aux
//显示当前用户进程 //显示所有进程信息
# ps –aux
USER PID %cpu %mem vsz rss tty stat start time command
root 1 0.0 0.3 1096 476
?s
18:20 0:04 init
crontab命令提交的调度任务存放在 /var/spool/cron目录中,并且以提交的用户名称命 名,等待crond进程来调度执行。

《Linux实验教程》教学课件 第7章 文件系统的设计与实现

《Linux实验教程》教学课件 第7章 文件系统的设计与实现

Ext2文件系统(4)
块组描述符 – 每个块组都有一个块组描述符ext2_group_desc,记录该
块组的以下信息: – 数据块位示图。表示数据块位示图占用的块号,此位示
图反映块组中数据块的分配情况,在分配或释放数据块 时需使用数据块位示图。 – inode位示图。表示inode位示图占用的块号,此位示图反 映块组中inode的分配情况,在创建或删除文件时需使用 inode位示图。 – inode表。块组中inode占用的数据块数,系统中的每个文 件对应一个inode,每个inode都由一个数据结构来描述。 – 空闲块数、空闲inode数和已用数目。 – 一个文件系统中的所有块组描述符结构组成一个块组描 述结构表,每个块组在其超级块之后都包含一个块组描 述结构表的副本,实际上,Ext2文件系统仅使用块组1中 的块组描述结构表。
– 文件和文件系统 – 文件分类和属性 – 文件控制块和文件目录
UNIX类文件系统和非UNIX类文件系统
• UNIX类文件使用四种和文件系统相关的抽象概念: 文件、目录项、索引节点和安装点。
• 文件(file)—文件是由文件名标识的有序字节串,典 型的配套文件操作有读、写、创建和删除等。
• 目录项(dentry)—是文件路径名中的一部分。 • 索引节点(inode)—是存放文件控制信息的数据结构,
又分磁盘块中的inode和主存中活动的inode。 • 安装点(mount point)—文件系统被安装在一个特定
的安装点上,所有的已安装文件系统都作为根文件 系统树中的叶子出现在系统中。
主要内容
• 背景知识 – 文件系统基本概念 – 文件管理的数据结构 – Ext2文件系统
• 实验内容 – 模拟实现一个Linux文件系统

《linux课程》课件

《linux课程》课件

使用 Cron 命令可以设置和管 理定时任务,自动执行脚本和 命令。
Top
Top 命令可以帮助用户查看和 管理系统进程,对系统性能进 行监控。
Linux 系统监控和调优
1
C PU 管理
2
Linux CPU 管理技巧包括进程管理、
CPU 亲和力设置、数据缓存优化等。
3
内存管理
Linux 内存管理是系统性能调优的关 键,可以通过调整内存大小提升系统 速度。
2
容灾和恢复
掌握容灾和恢复技巧,能够保证系统在不同灾难情景下的全面恢复。
3
性能优化
了解性能优化技术,可以识别和解决系统性能瓶颈问题。
Linux 常见问题解决
无法启动系统
检查 BIOS 设置和硬件故障等因素,解决无 法启动进入系统的问题。
驱动问题
检查硬件设备的驱动和系统的兼容性,解决 硬件设备无法正常工作的问题。
应用程序性能问题
使用 top 命令查看进程性能和资源使用情况, 解决应用程序卡顿和占用系统资源过多的问 题。
网络问题
使用网络工具 ping 和 traceroute 等调试网 络连接问题。
ping、traceroute、nslookup 等命令能够帮助用户分析网络 状况。
Linux 网络配置
1
IP 地址和网关
掌握 IP 地址和网关配置方法,能够简单高效地连接网络。
2
DNS 服务器
了解 DNS 服务器的作用和配置方法,可以帮助用户解析 URL 地址和进行网络 通信。
3
网络协议
熟悉 Linux 支持的 TCP/IP 网络协议,可以识别和纠正网络问题。
概念,能够帮助用户管理文件系统的

Linux程序设计——技术技巧与项目实践---进程调度与通信编程--第7章解析

Linux程序设计——技术技巧与项目实践---进程调度与通信编程--第7章解析
2018X下的进程概述 7.2 进程的系统调用 7.3 进程间通信 7.4 信号 7.5 守护进程 7.6 实战技巧 巧妙使用Tab键
2018/11/3
7.1 Linux下的进程概述
7.1.1 进程的概念
2
• Linux作为多用户操作系统,支持多道程序设计、分时处理和软实时处 理,带有微内核的一些特征,在程序设计时需引进进程机制。当前正 在运行的程序称为进程,对进程的监视和控制是linux系统管理员的核 心任务。管理员可以终止或重启一个进程,也可以指定一个新的优先 级。命令“ps”和“top”用于查看当前进程列表。如何用这些命令管理 linux系统中的进程请参见本书第三章中的“3.7 进程管理命令”一节。 • 监视linux的标准工具ps(process status)返回正在运行程序的信息, 包括程序运行的用户名,CPU运行份额和时间。如果要手工终止程序 或确定哪个程序让系统变慢,这些信息很有用。监视和控制进程很有 必要。 • 使用ps、top、kill和renice命令可以看到进程的运行情况并对它们进行 控制。进程是操作系统调度单位,进程PCB用一个名为task_struct的结 构体表示,定义在/include/linux/sehed.h中。每个task_struct结构占 1680字节,系统中最大进程数由系统物理内存大小决定。每当创建一 个新进程时,便在内存中申请一个空task_struct结构,填入需要的信息。
• • • • • •
2018/11/3
5
• • • • •
5)unsigned long policy 表示该进程的进程调度策略。调度策略有: · SCHED_OTHER 0,非实时进程,用基于优先权的轮转法。 · SCHED_ FIFO 1,实时进程,用先进先出算法。 · SCHED_RR 2,实时进程,用基于优先权的轮转法。

Linux入门学习大全超详细 ppt课件

Linux入门学习大全超详细 ppt课件

Linux操作系统
第1章 Linux入门及安装
1.1 Linux入门 1.2 红旗Linux的安装 1.3 LILO的配置和使用 习题
Linux操作系统
1.1 Linux 入 门
1.1.1 什么是Linux Linux是一套免费使用和自由传播的类Unix操作系统,
它主要用于基于Intel x86系列CPU的计算机上。这个系 统是由全世界各地的成千上万的程序员设计和实现的, 其目的是建立不受任何商品化软件的版权制约且全世 界都能自由使用的Unix兼容产品。
Linux操作系统
Linux的出现,最早开始于一位名叫Linus Torvalds的 计算机业余爱好者,当时他是芬兰赫尔辛基大学的学 生,他的目的是设计一个代替Minix(是由一位名叫 Andrew Tannebaum的计算机教授编写的一个操作系统 示教程序)的操作系统,这个操作系统可用于386、486 或奔腾处理器的个人计算机上,并且具有Unix操作系 统的全部功能,这就开始了Linux雏形的设计。
精品资料
Linux操作系统
• 你怎么称呼老师? • 如果老师最后没有总结一节课的重点的难点,你
是否会认为老师的教学方法需要改进? • 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭 • “不怕太阳晒,也不怕那风雨狂,只怕先生骂我
笨,没有学问无颜见爹娘 ……” • “太阳当空照,花儿对我笑,小鸟说早早早……”
Linux以其高效性和灵活性著称,它能够在PC计算机 上实现全部的Unix特性,具有多用户、多任务的能力。 Linux是在GNU公共许可权限下免费获得的,是一个符 合POSIX标准的操作系统。
Linux操作系统
所谓GNU,是Stallman在1984年提出的一个计划, 它的思想是“源代码共享,思想共享”,目的是开发 一个完全自由的,与Unix类似但功能更强的操作系统, 以便为所有的计算机使用者提供一个功能齐全、性能 良好的基本系统。在其他人的协作下,他创作了通用 公共许可证(General Public License,GPL),这对推动 自由软件的发展起了重要的作用。与传统的商业软件 许可证不同的是,GPL保证任何人有共享和修改自由 软件的自由,任何人都有权取得、修改和重新发布自 由软件的源代码,并且规定在不增加费用的条件下得 到源代码(基本发行费用除外)。

教学课件第7章Linux文件管理

教学课件第7章Linux文件管理
7.5 文件与目录基本操作
7.5.7 文件的复制、移动和删除命令-cp,mv,rm
1.cp命令。 cp [option] [ src_filel src_dir] [dst_file I dst_dir]
2.mv命令。 mv [option] [src_file|src_dir] [dst_fileldst_dir]
第七章 Linux文件管理
7.4 文件操作系统调用
在VFS中,采用dentry结构和inode节点配合实 现文件查找。
主要文件操作:
1.文件的打开。 2.文件的关闭 。 3.文件指针移动 。 4.读写文件操作。 5.文件属性控制。 6.文件上锁。 7.文件的I/O控制。 8.各种其他文件操作。
第七章 Linux文件管理
第七章 Linux文件管理
7.5 文件与目录基本操作
7.5.3 文件查找命令-find,locate
1.find命令。 find [option] filename
2.locate命令 。 locate [option] filename
第七章 Linux文件管理
7.5 文件与目录基本操作
7.5.4 文本处理命令-sort,uniq
第七章 Linux文件管理
7.3 虚拟文件系统
虚拟文件系统(VFS)是物理文件系统与服务之 间的一个接口层,它对每一个具体的文件系统的所有 细节进行抽象,使得Linux用户能够用同一个接口使 用不同的文件系统。
VFS只是一种存在于内存的文件系统,在系统 启动时产生,并随着系统的关闭而注销。
第七章 Linux文件管理
第七章 Linux文件管理
7.2 Linux文件系统
7.2.3 文件系统的实现

Linux的进程控制

Linux的进程控制
28
6.2.4 僵尸进程
编辑源程序代码:
此例中的子进程运行时间,明显 比父进程时间长。为了避免子进 程成为僵尸进程,父进程调用 wait,阻塞父进程的运行,等待 子进程正常结束,父进程才继续 运行,直到正常结束。
29
wait函数说明
30
6.2.4 僵尸进程
例6-7:设计一个程序,要求用户可以选择 是否复制进程,子进程模仿思科 (Cisco)1912交换机的开机界面,以命令行 的方式让用户选择进入,父进程判断子进 程是否正常终止。 流程图:
请编写并进行调试。
23
6.2.3 进程终止
滥用fork函数会占满系统进程,而且子进程 与父进程使用不同的内存空间,不断产生 子进程,也可能让系统资源消耗殆尽。 Linux环境下c终止进程主要用exit和_exit函 数。
观察结果可以看出,调
例6-5:设计一个程序,要求用e子xit进函数程时和,父缓冲进区
waitpid的作用和wait一样,但它并不一定要等待第一个终 止的子进程,它还有若干选项,也能支持作业控制。
实际上wait函数只是waitpid函数的一个特例,在Linux内部 实现wait函数时直接调用的就是waitpid函数。
27
6.2.4 僵尸进程
例6-6:设计一个程序,要求复制进程,子 进程显示自己的进程号(PID)后暂停一段时 间,父进程等待子进程正常结束,打印显 示等待的进程号(PID)和等待的进程退出状 态。 流程图:
33
waitpid函数说明
34
3 Linux守护进程
守护进程(Daemon)是运行在后台的一种 特殊进程。 守护进程独立于控制终端并且周期性地执 行某种任务或等待处理某些发生的事件。 守护进程是一种很有用的进程。Linux的大 多数服务器就是用守护进程实现的。 同时,守护进程完成许多系统任务。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 因为子进程几乎是父进程的完全复制,所以父子两个进程 会运行同一个程序。因此需要用一种方式来区分它们,并 使它们照此运行,否则,这两个进程不可能做不同的事。
创建进程(2)
• 实际上是在父进程中执行fork()函数时,父进程会复制出一个子 进程,而且父子进程的代码从fork()函数的返回开始分别在两个 地址空间中同时运行。从而两个进程分别获得其所属fork()的返 回值,其中在父进程中的返回值是子进程的进程号,而在子进 程中返回0。因此,可以通过返回值来判定该进程是父进程还是 子进程。
• 在Linux中获得当前进程的PID和PPID的系统调用函数为 getpid()和getppid(),通常程序获得当前进程的PID和PPID之 后,可以将其写入日志文件以做备份。
• 另外,进程标识还有用户和用户组标识、进程时间、资源 利用情况等
进程控制块和标识符
• Getpid和getppid系统调用过程如下所示: • /*process.c*/ • #include<stdio.h> • #include<unistd.h> • #include <stdlib.h> • int main() •{ • /*获得当前进程的进程ID和其父进程ID*/ • printf("The PID of this process is %d\n",getpid()); • Printf("The PPID of this process is %d\n",getppid()); •}
• “代码段”存放的是程序代码的数据。 • “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的
局部变量等。
Linux下进程地址空间、用户态和内核态
高地址 存放传递参数及环境变量 堆栈
低地址
堆 BSS数据段 数据段(可读/只读)
数据段 代码段
中断或系统调用
用户进程
用户态
内核进程
内核态
Linux下的进程管理
进程控制块和标识符
• 进程是Linux系统的基本调度和管理资源的单位,它是通过 进程控制块来描述的。进程控制块包含了进程的描述信息、 控制信息以及资源信息,它是进程的一个静态描述。在 Linux中,进程控制块中的每一项都是一个task_struct结构。
• 在Linux中最主要的进程标识有进程号(PID,Process Idenity Number)和它的父进程号(PPID,parent process ID)。其中PID惟一地标识一个进程。PID和PPID都是非零的 正整数。
• 使用exec函数族主要有两种情况
• 当进程认为自己不能再为系统和用户做出任何贡献时,就可以 调用exec函数族中的任意一个函数让自己重生;
• 如果一个进程想执行另一个程序,那么它就可以调用fork()函数 新建一个进程,然后调用exec函数族中的任意一个函数,这样看 起来就像通过执行应用程序而产生了一个新进程(这种情况非常 普遍)。
进程控制块和标识符
• 使用arm-linux-gcc进行交叉编译,再将其下载到目标板上运 行该程序,可以得到如下结果,该值在不同的系统上会有 所不同:
• [root@localhost process]# ./process • The PID of this process is 78 • THe PPID of this process is 36
Linux下的进程管理
• 调度启动系统需要进行一些比较费时而且占用资源的维护工作,并
且这些工作适合在深夜无人职守的时候进行,这时用户就可以事先进 行调度安排,指定任务运行的时间或者场合,到时候系统就会自动完 成这一切工作。使用调度启动进程有几个常用的命令,如at命令在指 定时刻执行相关进程,cron命令可以自动周期性地执行相关进程,
程返回子进程的PID,而子进程的返回值为0。
exec函数族(1)
• exec函数族就提供了一个在进程中启动另一个程序执行的 方法。它可以根据指定的文件名或目录名找到可执行文件, 并用它来取代原调用进程的数据段、代码段和堆栈段,在 执行完之后,原调用进程的内容除了进程号外,其他全部 被新的进程替换了。另外,这里的可执行文件既可以是二 进制文件,也可以是Linux下任何可执行的脚本文件。
• Linux中的进程包含3个段,分别为“数据段”、“代码段” 和“堆栈段”。
• “数据段”存放的是全局变量、常数以及动态数据分配的数据空间, 根据存放的数据,数据段又可以分成普通数据段(包括可读可写/只 读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放 未初始化的全局变量)以及堆(存放动态分配的数据)。
因为等待资源分配 而唤醒
执行
因为等待某个资源 而睡眠
等待
Linux下进程地址空间(1)
• Linux系统是一个多进程的系统,它的进程之间具有并行性、 互不干扰等特点。也就是说,每个进程都是一个独立的运 行单位,拥有各自的权利和责任。其中,各个进程都运行 在独立的虚拟地址空间,因此,即使一个进程发生异常, 它也不会影响到系统中的其他进程。
示例
• 在该程序中,首先使用fork函数新建一个子进程,然后在子进程里使用 execlp函数。可以看到,这里的参数列表就是在shell中使用的命令名和 选项。并且当使用文件名的方式进行查找时,系统会在默认的环境变 量PATH 中寻找该可执行文件。可将编译后的结果下载到目标板上,运 行结果如下所示:
exec函数族(2)
exec函数族对应位的含义
示例
• execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名, 找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、 argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来 表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解 释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec 函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就 会变成加载程序的代码,execlp()后边的代码也就不会执行了.
称为子进程,而原进程称为父进程。使用fork()函数得到的 子进程是父进程的一个复制品,它从父进程处继承了整个 进程的地址空间,包括进程上下文、代码段、进程堆栈、 内存信息、打开的文件描述符、信号控制设定、进程优先 级、进程组号、当前工作目录、根目录、资源限制和控制 终端等,而子进程所独有的只有它的进程号、资源使用和 计时器等。
• [root@localhost process]# arm-linux-gcc fork..c –o fork • 将可执行程序下载到目标板上,运行结果如下所示: • The return valud s 76 • In father process!! • My PID is 75 • The return value is :0 • In child process!! • My PID is 76 • 从该实例中可以看出,使用fork 函数新建了一个子进程,其中的父进
• 启动进程
手工启动 调度启动
• 进程相关命令
Linux下的进程管理启动进程 和调度进程
• 手工启动 。手工启动是由用户输入命令直接启动进程 • 手工启动进程又可分为前台启动和后台启动。·前台启动是手工启动一
个进程的最常用方式。一般地,当用户键入一个命令如“ls –l”时,就 已经启动了一个进程,并且是一个前台的进程。 • 后台启动往往是在该进程非常耗时,且用户也不急着需要结果的时候 启动的。比如用户要启动一个需要长时间运行的格式化文本文件的进 程。为了不使整个shell在格式化过程中都处于“瘫痪”状态,从后台 启动这个进程是明智的选择。
Linux下的进程管理
.调度进程 • 调度进程包括对进程的中断操作、改变优先级、查看进程状态等,在
Linux 下可以使用相关的系统命令实现其操作 进程相关命令
*** Linux进程控制编程
创建进程(1)
• 在Linux中创建一个新进程的方法是使用fork()函数。 • fork()函数用于从已存在的进程中创建一个新进程。新进程
进程的状态
• 进程是程序的执行过程,根据它的生命周期可以划分成3种 状态。
• 执行态:该进程正在运行,即进程正在占用CPU。
• 就绪态:进程已经具备执行的一条件,正在等待分配CPU的处 理时间片。
• 等待态:进程不能使用CPU,若等待事件发生(等待的资源分配 到)则可将其唤醒。
时间片到 调度
就绪
种资源(P. Denning) 进程是可以并行执行的计算单位。(S. E. Madnick,J. T. Donovan) • 以上进程的概念都不相同,但其本质是一样的。它指出了进程
是一个程序的一次执行的过程,同时也是资源分配的最小单元。 它和程序是有本质区别的,程序是静态的,它是一些保存在磁 盘上的指令的有序集合,没有任何执行的概念;而进程是一个 动态的概念,它是程序执行的过程,包括了动态创建、调度和 消亡的整个过程。它是程序执行和资源管理的最小单位。
• /*通过result的值来判断fork函数的返回情况,首先进行出错处理*/ • if(result == -1){ • perror("fork"); • exit; •} • /*返回值为0代表子进程*/ • else if(result == 0){ • printf("The return value is %d\nIn child process!!\nMy PID is%d\n",result,getpid()); •} • /*返回值大于0代表父进程*/ • else •{ • printf("The return value is %d\nIn father process!!\nMy PID is • %d\n",result,getpid()); •} •}
相关文档
最新文档