程序到进程的转变:查找命令、fork与exec
需积分: 15 192 浏览量
更新于2024-08-05
收藏 24.46MB PDF 举报
"查找命令对应程序文件的位置-mil-hdbk-338b"
在操作系统中,进程扮演着至关重要的角色。本章聚焦于进程及其通信机制,详细介绍了进程环境和进程状态,以及如何从程序转变为进程的过程。进程是程序在特定上下文中的执行实例,拥有独立的内存空间和资源,而程序则是一个静态的文件,存储在硬盘上的可执行映像。在Linux系统中,例如,`/bin`、`/sbin`、`/usr/bin`、`/usr/sbin`等目录下保存着大量的程序文件。
当我们在Shell中运行命令时,程序会通过三个关键步骤转化为进程:
1. 查找命令对应程序文件的位置。系统会在预定义的路径中,比如`$PATH`环境变量指定的目录里搜索命令对应的可执行文件。
2. 使用`fork()`系统调用创建一个新的进程。`fork()`创建了一个与父进程相似的新进程,两者共享大部分资源,但具有独立的进程ID。
3. 在新进程中调用`exec`族函数(如`execl()`, `execv()`, `execle()`, `execvp()`等)加载程序文件,并替换当前进程的映像,执行程序的`main()`函数。
Linux中的进程有六种状态:
- D:不可中断的深度睡眠,此时进程不会响应任何异步信号。
- R:运行态或就绪态,能获得CPU执行权。
- S:可中断的睡眠,等待某个事件的发生。
- T:暂停或跟踪状态,用于调试。
- X:退出状态,进程即将被销毁。
- Z:僵尸状态,进程已结束但其资源还未被完全回收。
进程在执行期间,状态会根据其生命周期和外部事件进行转换。例如,一个进程可能会从运行态变为睡眠态,等待I/O操作完成,然后再次变为就绪态,最后由操作系统调度执行。
嵌入式Linux,特别是与周立功相关的技术,是Linux操作系统在单片机和嵌入式设备上的应用,提供了轻量级的解决方案,适合资源有限的硬件平台。这部分内容通常涵盖了嵌入式开发的基础,包括内核定制、驱动程序开发和应用程序接口(API)的使用,以实现高效可靠的嵌入式系统设计。
了解这些基础知识对于理解和操作Linux系统至关重要,无论是进行桌面应用开发还是嵌入式系统的设计,都需掌握进程管理和通信机制,以实现多任务并行和高效资源利用。
2021-10-02 上传
2023-08-31 上传
2024-06-20 上传
2023-10-26 上传
2024-04-18 上传
2024-11-06 上传
SW_孙维
- 粉丝: 51
- 资源: 3838
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析