![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统编程
文章平均质量分 89
学习我是拒绝的
这个作者很懒,什么都没留下…
展开
-
四、共享内存
信号灯 相当于一个值大于或等于 0 计数器,信号灯值大于 0,进程就可以申请资源,信号灯值-1,如果信号灯值为 0,一个进程还想对它进行-1,那么这个进程就会阻塞,直到信号灯值大于 1。Linux 内核为每个消息队列对象维护一个 msqid_ds,每个 msqid_ds 对应一个 id,消息以链表形式存储, 并且 msqid_ds 存放着这个链表的信息。在操作系统中,申请内存的最小单位为页,一页 是 4k 字节,为了避免内存碎片,我们一般申请的内存大小为页的整数倍。以进入临界区,使 sv 减 1。原创 2023-02-04 11:24:54 · 733 阅读 · 0 评论 -
三、进程通信
这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号;2. fork()创建子进程,一个进程读,使用 read(),一个进程写,使用 write(1. 只能用于有关联的进程间数据交互,如父子进程,兄弟进程,子孙进程,在目录中看不到文件节。2. 只能单向传输数据,即管道创建好后,一个进程只能进行读操作,另一个进程只能进行写操作,等于-1,除发送进程自身外,向所有进程 ID 大于 1 的进程发送信号。常用来进行错误检 查。原创 2023-02-04 00:33:28 · 373 阅读 · 0 评论 -
二、进程的知识
所有的进程都是由其他进程创建(除了 pid 为 0 号的 idle 进程),pid 号为 1 的 init 进程是系统启动后。vfork()会产生一个新的子进程,其子进程会共享父进程的数据与堆栈空间,并集成父进程的用户代码等。僵尸进程:子进程结束以后,父进程还在运行,但是父进程不去释放进程控制块,这个子进程就叫做僵尸。运行的第一个进程,是所有进程的父进程,init 进程会初始化一部分系统服务,创建其他进程。ps查看正在运行的进程,一个进程可以有多线程,同一进程里面的线程共享此进程的同一资源。原创 2023-02-04 00:16:11 · 360 阅读 · 0 评论 -
一、系统编程常用api
头文件是 stdio.h,文件 IO 是依赖于 Linux 操作系统的,标准 IO 是不依赖操作系统的,所以在任何的操作系 统下,使用标准 IO,也就是 C 库函数操作文件的方法都是相同的。,所有打开的文件都有一个对 应的文件描述符。文件 IO 是直接调用内核提供的系统调用函数,头文件是 unistd.h,标准 IO 是间接调用系统调用函数,mode:权限掩码,对不同用户和组设置可执行,读,写权限,使用八进制数表示,此参数。mode:权限掩码,对不同用户和组设置可执行,读,写权限,使用八进制数表示,此参。原创 2023-02-03 23:52:31 · 438 阅读 · 0 评论