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