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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值