操作系统
荨莘
这个作者很懒,什么都没留下…
展开
-
如何避免死锁
如何避免死锁 什么是死锁 由于两个或多个线程,互相持有对方所需要的资源,而导致线程一直处于等待状态无法前行,死锁通常出现在多个锁的情况下; 死锁如何产生 互斥条件:一个资源每次只能被一个进程使用; 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放; 不剥夺条件:进程已获得的资源,在没有使用完之前,不能强行剥夺; 循环等待条件:多个进程之间形成一种互相循环等待资源的关系。 如何避免线程死锁 破坏不剥夺条件:让对面放弃自己已有的资源; 破坏请求与保持条件:在自己需要的锁拿不到时,主动原创 2021-10-02 09:02:11 · 208 阅读 · 0 评论 -
进程间通信方式
管道模型 匿名管道:Linux 命令行的 | (前一个命令的输出,作为后一个命令的输入),这种类型的管道通常是没有名字的,用完了就销毁了 命名管道(FIFO):使用 mkfifo() 函数创建,管道以文件的形式存在 消息队列模型 通常用在多线程中生产者消费者模型中 内核创建的一个队列,多个进程可以往里面发送消息,也可以从里面接收消息 共享内存 + 信号量 多个进程共享一片连续的内存空间 速度快,性能高 会出现进程不安全的情况,所以需要引入信号量避免冲突(互斥) 同一共享资源,同一刻只能被一个.原创 2021-10-02 08:59:35 · 109 阅读 · 0 评论 -
如何创建守护进程
如何创建守护进程 使用 nohup 命令创建守护进程,使得程序挂在后台,但是程序执行完成后就会退出,程序的输出会存入 log 文件。 从 fork 开始按按步骤创建 在父进程中执行 fork 函数,并且父进程退出,子进程将被 init 进程托管; 在子进程中使用 setsid 函数创建新的会话,目的是让子进程脱离终端的控制,并且摆脱父进程的影响; 进程是属于进程组的,进程组的组号 gid 就是进程组组长的 pid,登录会话可以包括多个进程组,这些进程组共享一个控制终端,如果想要创建守护进程原创 2021-09-06 17:53:34 · 413 阅读 · 0 评论