手机网站解决方案,外包做网站需要多少钱,可用的国外ip地址,做百家好还是个人网站目录
回顾上一节
进程
基本概念
描述进程 - PCB
task_struct - PCB的一种
task_ struct内容分类
组织进程
下面来介绍task_struct内部
PID 和PPID
子进程与父进程
getpid()和getppid()
杀进程
exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过sy…
目录
回顾上一节
进程
基本概念
描述进程 - PCB
task_struct - PCB的一种
task_ struct内容分类
组织进程
下面来介绍task_struct内部
PID 和PPID
子进程与父进程
getpid()和getppid()
杀进程
exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过system call ,贯穿 OS 来访问硬件. 2. 我们的程序要运行时,现将程序加载到内存, OS内部也会对应出现程序的task_struct 接入到task_struct链表 ,OS只需要对链表进行增删查改,就能对进程进行管理. 进程
基本概念 进程 内核数据结构程序的代码和数据. 进程分为瞬时进程和常驻进程 1. 瞬时进程 如ls pwd 指令 2. 常驻进程 如网易云音乐(打开后 一直不退 ,需要用户退出) 描述进程 - PCB 进程信息被放在一个叫做进程控制块的数据结构中可以理解为进程属性的集合。课本上称之为PCBprocess control blockLinux操作系统下的PCB是task_struct task_struct - PCB的一种 在Linux中描述进程的结构体叫做task_struct。 task_struct是Linux内核的一种数据结构它会被装载到RAM(内存)里并且包含着进程的信息 task_ struct内容分类 标示符: 描述本进程的唯一标示符用来区别其他进程。 状态: 任务状态退出代码退出信号等。 优先级: 相对于其他进程的优先级。 程序计数器: 程序中即将被执行的下一条指令的地址。 内存指针: 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子要加图CPU寄存器]。 IO状态信息: 包括显示的I/O请求,分配给进程的IO设备和被进程使用的文件列表。 记账信息: 可能包括处理器时间总和使用的时钟数总和时间限制记账号等。 其他信息 组织进程 可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。 下面来介绍task_struct内部 PID 和PPID 进程idPID父进程idPPID #include stdio.h
#include sys/types.h
#include unistd.hint main()
{printf(pid: %d\n, getpid());printf(ppid: %d\n, getppid());return 0;
} 子进程与父进程 在linux系统中 ,启动后,新建的进程都是由其父进程创建的 在linux中默认的shell是bash 在命令行中 ,执行命令/执行程序 , 本质都是bash创建子进程 , 子进程执行命令行中的代码 因为bash不想让命令行的命令影响自己,就创建了子进程. 在 Linux 和 Unix 系统中Shell 的中文名称通常被称为命令行解释器 linux为了方便呈现进程的信息,构建了一个专门的文件proc proc中以数字命名文件夹 ,一个文件夹就是一个进程 ,数字是此进程的pid ,文件夹内部就是该进程的属性 同一个程序 ,不同时间运行时,它的pid不同 注意: /proc 不是磁盘级文件 ,电脑关了, /proc就会被释放 ,OS启动时 ,所有进程的pid被集中放到/proc /proc是内存级数据 getpid()和getppid() getpid()函数返回值是pid_t 用于获取此进程的pid getppid()用于获取此进程的父进程ID 杀进程 想要进程结束 ,将下面代码中 pid 换成 对应进程的pid即可. kill -9 pid exe 和 cwd 用ls /proc/pid -l 可以将此进程内部属性展示 exe文件 记录的的是此进程(原可执行程序存储的磁盘位置) cwd文件 记录的是当前路径 current work dir(当前工作目录) 当前路径 进程的cwd