摘要:
进程间通信(IPC) 你知道进程间通信方式有哪几种吗? 某种方式具体原理? 进程是一个独立的资源分配单元,不同进程之间是独立的,没有关联,不能在一个进程直接访问另一个进程的资源 但是进程不是孤立的,不同的进程需要进行信息的交互与状态的传递,因此需要进程间通信 ####进程间通信目的 数据传输:一个进 阅读全文
摘要:
进程退出 #include<stdlib.h> void exit(int status); #include<unistd.h> void _exit(int status); status:是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取到 exit()在进程推出前刷新IO缓冲区 阅读全文
摘要:
exec函数族 一般先创建一个子进程,再在子进程中调用exec函数族 会根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,即在调用进程内部执行一个可执行文件 exec函数族执行成功后不会返回,因为调用进程的实体,包括代码段、数据段和堆栈都已经被新的内容取代,只留下进程ID等表面上的信息,只 阅读全文
摘要:
父子进程之间的关系 ####不同点 fork函数的返回值不同 父进程中:>0 返回的是子进程ID 子进程中:=0 PCB中的一些数据 当前进程的id pid 当前进程的父进程的id ppid 信号集 共同点 某些状态下:子进程刚被创建出来,还没有执行写操作 用户区的数据 文件描述符表 父子进程对变量 阅读全文
摘要:
fork进程创建 创建子进程,会复制当前的父进程 子进程和父进程运行在分开的内存空间,但是在fork()时两者有相同的内容 fork:用于创建子进程 #include <sys/types.h> #include <unistd.h> pid_t fork(void); 作用:用于创建子进程 返回值 阅读全文
摘要:
程序和进程 程序:(文件) 进程:(资源) 并行与并发 并行:同一时刻,有多条指令在多个处理器上同时执行 并发:在同一时刻只能有一条指令执行,但多个进程指令被快速轮换,使得宏观上具有多个进程同时执行的效果 进程控制块 为了管理进程,内核为每个进程分配一个进程控制块,进程控制块为task_struct 阅读全文
摘要:
标准C库: #include <stdio.h> int fseek(FILE *stream, long offset, int whence); Linux库: #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off_ 阅读全文
摘要:
/* #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); 参数: -fd:文件描述符,open()得到,通过这文件描述符操作某个文件 -buf:需要读取数据存放的地方,数组的地址 -count:指定的数组的大小 返回值 阅读全文
摘要:
文件描述符 程序只占用磁盘空间,不占用内存空间 程序启动后产生进程,进程在内存中 通过fopen()会返回一个文件描述符,用于定位操作文件 文件描述符位于虚拟存储空间的内核区 PCB:进程控制块,用于需要管理的数据 PCB内部有一个数组(文件描述符表,以为一个进程可以同时打开多个文件 在文件描述符表 阅读全文
摘要:
虚拟地址空间 实际上不存在 虚拟内存,用于解决内存不足或段错误 32位机器:2^32 64位机器:2^48 MMU:内存管理单元会讲虚拟地址空间映射到真实地址空间中 用户区:NULL在受保护的地址 栈空间:高地址向低地址存 堆空间:低地址向高地址存 内核区:用户只可以通过系统调用修改内核数据 阅读全文