
Linux系统编程
Linux系统编程阶段
又偷吃我氮泵_
心中有火 眼里有光
展开
-
Linux系统编程:生产者与消费者模型
前言生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加资源,消费者从存储空间中取走资源,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。...原创 2020-09-28 16:33:48 · 345 阅读 · 0 评论 -
Linux系统编程:死锁的产生和预防(银行家算法)
前言多个执行流在对多个锁资源进行争抢操作时,因为推进顺序不当导致执行流相互等待,流程无法继续推进,导致死锁。一:死锁的产生死锁产生的四个必要条件1. 互斥条件:同一时间一个锁资源只能被一个执行流加锁,直到释放。2. 不可剥夺条件:一个执行流在释放锁资源之前,其他的执行流无法剥夺占用资源。3. 请求保持条件:一个执行流请求被占有的锁资源时发生阻塞,还对已经获得的锁资源不进行释放。4. 环路等待条件:两个执行流相互请求对方的资源并且不释放已经得到的资源,相互等待。二:死锁的预防破坏死锁原创 2020-09-26 22:43:00 · 676 阅读 · 0 评论 -
Linux系统编程:多线程(概念、控制、安全)
前言线程是进程当中的一条执行流,执行一个程序中的部分代码,运行在进程的虚拟地址空间内部,共享进程的大部分资源,线程也被称为轻量级进程。进程:是系统资源分配的基本单位操作系统会为运行中的程序分配所需要的资源线程:是cpu调度的基本单位操作系统是通过pcb实现程序的调度和运行一:线程间的独有与共享1.1 线程间独有1. 线程ID:每个线程都有自己独有的线程ID,这个ID在进程中是唯一的,进程用线程ID来标识线程。2. 寄存器:线程间是并发运行的,每个线程都有自己不同的运行线索(上原创 2020-09-25 23:02:52 · 171 阅读 · 0 评论 -
32位系统和64位系统
前言众所周知,我们通常说操作系统是32位还是64位说的其实是32位处理器(CPU)还是64位处理器(CPU),Windows系统有32位和64位之分,下面我们来总结一下32位系统和64位系统的原理、区别以及如何判断。32位系统和64位系统的原理我们现在所称的计算机系统是32位或64位主要依据的是CPU解析的字组大小(字组大小:CPU每次能处理的数据量)32位处理器32位系统CPU一次...原创 2020-04-28 10:31:53 · 707 阅读 · 0 评论 -
IPC:进程间的通信方式
前言由于进程的独立性,当我们要使两个进程间进行数据交互的时候就得通过介质来实现。进程间进行通信的介质我们把它们称之为进程间通信方式(IPC)根据进程间通信场景的不同,操作系统为用户提供了几种不同的进程间通信方式:管道、共享内存、消息队列、信号量。管道(数据传输)管道的本质:内核中的一块缓冲区管道通信原理:让多个进程都能访问到同一块缓冲区从而实现进程间通信管道的特性:...原创 2020-04-26 22:19:23 · 283 阅读 · 2 评论 -
Linux系统下的孤儿进程和守护进程(精灵进程)
前言在之前的学习中我们了解到了僵尸进程的相关知识(僵尸进程博客:https://blog.youkuaiyun.com/Outtch_/article/details/105160491),其实在Linux系统中还有两种特殊的进程——孤儿进程和守护进程(精灵进程)。孤儿进程和守护进程又是什么呢?它们有什么特殊的地方呢?它们怎么出现的呢?它们怎么用代码实现呢?相信大家对这两种陌生的进程也有着许许多多的疑惑...原创 2020-04-02 18:33:10 · 896 阅读 · 0 评论 -
Linux系统下的僵尸进程(概念、产生、危害、避免)
前言最近接触了僵尸进程这个概念,在被同学问到僵尸进程的产生、避免、危害时感觉还是概念模糊,没有深入了解,现在做了一些整理来复习僵尸进程的相关知识。僵尸进程是什么?Linux下的僵尸进程(Zombie) 和影视剧中的僵尸类似:僵尸进程就是处于僵死状态的进程(进程已经退出,但资源并没有完全被释放)。僵尸进程是如何产生的?子进程先于父进程退出由于要保存自身的退出返回值,资源并没有完全被释放...原创 2020-03-29 14:50:28 · 4569 阅读 · 0 评论