【Linux进程】一、什么是进程?什么是PCB?进程都有哪些状态?

简介: 【Linux进程】一、什么是进程?什么是PCB?进程都有哪些状态?

1.什么是程序?

程序就是编译好的二进制文件。

2.什么是进程?

  • 进程就是运行着的程序;
  • 从程序员的角度来讲,进程是运行一系列指令的过程;
  • 从操作系统的角度来说,进程是分配系统资源(CPU和内存)的基本单位,我们从网上下载的游戏啦、文件啦等等这些程序,不运行的时候是不占内存和CPU的,他们会放在磁盘上,如果运行的时候,就是一个进程,会占用内存和CPU,所以只有在打游戏的时候电脑才会卡;

3.程序和进程的区别

  • 程序占用磁盘,不占用系统资源,而内存占用系统资源;
  • 一个程序可以对应多个进程,而一个进程只能对应一个程序,比如说我们在电脑上安装一个QQ软件,可以同时登录多个账号;
  • 程序没有生命周期,进程有生命周期;

4.单道与多道程序设计

  • 单道程序设计:DOS,一个进程运行完了才能运行下一个进程;
  • 多道程序设计:为每个进程划分时间片,这个时间片很小,远远小于人眼的分辨能力,各个进程之间不停的切换,所以看起来像是多个进程在同时运行,也就是说宏观上并行,微观上还是串行的;

5.进程状态转换

其中,运行态到就绪态和运行态到挂起态都是失去CPU,但二者是有区别的:

  • 运行态→挂起态:因为缺少当前运行所需要的资源或数据而主动释放CPU转入挂起状态,比如在读数据时,如果缓冲区没有数据,当前进程无法读取数据也就无法继续工作,如果继续持有CPU的话会造成资源浪费,所以主动释放CPU转入挂起状态,等待缓冲区数据;
  • 运行态→就绪态:被迫失去CPU,当前进程拥有运行所需要的所有资源,但是时间片到了,不得不失去CPU转入就绪态,等待下一个时间片的到来;

6.MMU的作用

  • 虚拟地址和物理地址之间的映射,用户空间映射到物理内存是独立的(提高安全性),而内核空间是映射到同一个物理空间(方便进程间通信);
  • 设置内存访问级别;

7.进程控制块PCB

每个进程在内核中都有一个进程控制块PCB来维护进程相关信息,在Linux内核中的进程控制块是task_struct结构体形式的,结构体定义可以在

/usr/src/kernels/2.6.32-696.el6.x86_64/incoude/linux/sched.h

文件中查看(我是CentOS系统),也可以直接搜索,在shell下输入命令

grep -rn "struct task_struct{" /usr/

这个结构体总共1719-1345=374行(VI命令模式下,在结构体第一个{处键入%可以转到匹配的}处,也就是结构体末尾)。其中主要信息有:

  • 进程ID,系统中每个进程有唯一的ID,在C语言中用pid_t类型标识,实际上是一个非负整数;
  • 进程状态,包括就绪、运行、挂起、停止等状态;
  • 进程切换时需要保存和恢复的CPU寄存器;
  • 描述虚拟地址空间的信息;
  • 描述控制终端的信息;
  • 当前工作目录,每个进程有自己的工作目录,存在PCB中;
  • umask掩码,它也是进程独有的(存在PCB中说明它是进程独有的);
  • 文件描述符,包含很多指向file结构体的指针;
  • 和信号相关的信息;
  • 用户ID和组ID;
  • 会话session和进程组;
  • 进程可以使用的资源上限 Resource Limit ,该信息可以通过命令ulimit查看;
目录
打赏
0
0
0
0
13
分享
相关文章
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
118 1
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
61 34
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
46 16
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
138 20
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
123 13
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
linux进程管理万字详解!!!
本文档介绍了Linux系统中进程管理、系统负载监控、内存监控和磁盘监控的基本概念和常用命令。主要内容包括: 1. **进程管理**: - **进程介绍**:程序与进程的关系、进程的生命周期、查看进程号和父进程号的方法。 - **进程监控命令**:`ps`、`pstree`、`pidof`、`top`、`htop`、`lsof`等命令的使用方法和案例。 - **进程管理命令**:控制信号、`kill`、`pkill`、`killall`、前台和后台运行、`screen`、`nohup`等命令的使用方法和案例。
229 4
linux进程管理万字详解!!!
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
Linux内核的心脏:深入理解进程调度器
本文探讨了Linux操作系统中至关重要的组成部分——进程调度器。通过分析其工作原理、调度算法以及在不同场景下的表现,揭示它是如何高效管理CPU资源,确保系统响应性和公平性的。本文旨在为读者提供一个清晰的视图,了解在多任务环境下,Linux是如何智能地分配处理器时间给各个进程的。
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
113 8

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等