Linux进程初步理解

当一个程序没有运行的时候保存在磁盘里面,如果要运行就要加载到内存里面,内存里面有程序的代码和数据。内存里面这些代码和数据就是进程对应的代码和数据。但是这些代码和数据不是进程。

操作系统管理程序运行实际上是在管理进程,操作系统在内存中也占有一部分空间,用来管理进程。我们开机就是在把磁盘中的操作系统加载到内存里面。

课本上讲的是,进程是程序的一个执行实例,正在执行的程序
内核观点看,进程是担当系统分配资源(CPU时间,内存)的的实体

进程信息被放在一个叫做进程控制块的一个数据结构(struct PCB)中,可以理解为进程属性的集合,其中包括了内存指针,指向程序所在的内存地址。
struct PCB是一个链表,其中有struct PCB* next用来指向下一个结构体。操作系统对进程的管理其实就是对链表的管理。一个进程对应一个PCB

操作系统不直接管理代码和数据,而是管理进程,代码和数据只是进程的一小部分。

PCB是操作系统上的概念,具体到Linux中,这个数据结构叫做struct task_struct,这个数据结构叫做Linux进程控制块。
我们Linux中的指令也是程序,我们每执行一个指令都要加载到内存并创建进程,执行完后终止

ps axj:查看当前所有进程
ps axj | head -1 && ps axj | grep myprocess:&&符号表示连续执行两条命令,执行完"&&"前面的再执行后面的

每个进程都有唯一的进程标识符,叫做PID,PID是结构体中的一个无符号整型
用户无法自己获得进程的PID,所以操作系统提供了系统调用函数叫做get pid无参数,返回值位pid_t(无符号整形)
getppid():获得当前进程的父进程pid
fork():创建一个子进程。无参数,返回值为pid_t,子进程的返回值是0,父进程的返回值为其子进程的pid,返回值为负数则创建失败
fork以后的代码父子共享,主函数为父进程,fork创建的为子进程
fork会返回两个id值,有两个返回值是因为创建了子进程,我们在fork返回值之前就已经进行了代码共享,所以在两个进程里面有两个返回值就合情合理了。

ctrl + c:结束当前进程
kill -9 + 进程pid:结束pid对应进程

根目录下有一个文件为/proc,该文件夹包含了所有的进程信息,每形成一个进程该目录下就会形成以该进程pid命名的文件夹

相关推荐

  1. Linux进程初步理解

    2024-03-11 18:36:08       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 18:36:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 18:36:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 18:36:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 18:36:08       20 阅读

热门阅读

  1. SpringBoot中事务

    2024-03-11 18:36:08       26 阅读
  2. Android10禁用wifi随机mac地址,固定mac地址

    2024-03-11 18:36:08       22 阅读
  3. 小蓝的钥匙(蓝桥杯错排)

    2024-03-11 18:36:08       24 阅读
  4. JDBC编程(数据库编程)

    2024-03-11 18:36:08       23 阅读
  5. 视觉信息处理和FPGA实现第二次作业

    2024-03-11 18:36:08       23 阅读
  6. 获取webshell的十种方法

    2024-03-11 18:36:08       20 阅读
  7. Docker与低代码开发:重塑软件开发的未来

    2024-03-11 18:36:08       21 阅读
  8. 计算机视觉(CV)技术的优势和挑战

    2024-03-11 18:36:08       22 阅读
  9. chatgpt How to call functions with chat models

    2024-03-11 18:36:08       20 阅读
  10. Cisco IOS 使用 IP SLA 状态作为静态路由的开关

    2024-03-11 18:36:08       21 阅读