Linux
yonlylove
这个作者很懒,什么都没留下…
展开
-
生产者消费者模型
使用sem_init细则:第三个参数为信号量的数量二,为什么需要先申请信号量再加锁?回答:先申请信号量可以节省申请信号量的时间,线程在申请锁处等待即可。如果先申请信号量则只能串行执行申请信号量和锁。原创 2024-07-15 20:10:18 · 178 阅读 · 0 评论 -
文件描述符
是由从0开始递增的正整数,其中被默认打开的是,0:标准输入(键盘);1:标准输出(显示器);2:标准错误(显示器)。其后被打开的是未被分配的最小文件描述符。原创 2024-04-01 11:20:57 · 182 阅读 · 0 评论 -
进程地址空间
是进程的组成部分,是一个结构体,结构体中划分了不同的区域,栈,堆等区域,其中的地址都是虚拟地址,通过页表映射到物理地址上。父子进程指向的的虚拟地址相同,当子进程需要修改变量时,会发生写时拷贝,再想操作系统申请一块物理地址,但是父子进程的虚拟地址还是相同的。1,将物理内存从无序访问到有序访问。2,将进程管理与内存管理解耦。3,防止错误直接访问物理内存。为什么需要进程地址空间?什么是进程地址空间?原创 2024-03-18 20:07:00 · 339 阅读 · 0 评论 -
进程程序替换
程序被替换后不会再创建新的进程(进程的pid不会改变),但是该进程的数据和代码都会被替换(从新程序开始执行开始)。e(env):可以传输环境变量(系统和自己定义的都可以),传参是需要以NULL结尾。其中只有execve是系统调用,其他的函数都是底层封装了execve函数。shell的原理本质是创建了一个子进程,让子进程替换程序文件去执行。l(list):表示参数的命令行采用列表,传参是需要以NULL结尾。v(vector):表示命令行采用顺序表。p(path):自动搜索环境变量。原创 2024-03-27 21:06:02 · 173 阅读 · 0 评论