摘要: 用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。用户态拥有最低的特权级,内核态拥有较高的特权级。运行在用户态的程序不能直接访问操作系统内核数据结构和程序。内核态和用户态之间的转换方式主要包括:系统调用,异常和中断。 阅读全文
posted @ 2020-12-27 23:57 zeroPatrick 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 转载自:https://blog.csdn.net/ifwecande/article/details/107470579 管道 操作系统分为内核态和用户态,管道就是在内核中开辟一块缓冲区,不同的进程通过对这个缓冲取进行读写操作实现IPC。 管道其实有三种不同的形式, 匿名管道,半双工通信,只能在父 阅读全文
posted @ 2020-12-27 22:48 zeroPatrick 阅读(3275) 评论(0) 推荐(0) 编辑
摘要: 《Linux内核设计与实现》 阅读全文
posted @ 2020-12-27 22:05 zeroPatrick 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 《Linux内核设计与实现》 阅读全文
posted @ 2020-12-27 22:04 zeroPatrick 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-12-27 22:02 zeroPatrick 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-12-27 21:58 zeroPatrick 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 本文转载自:https://blog.csdn.net/com_ma/article/details/78701376 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) * idle进程由系统自动创建, 运行在内核态  阅读全文
posted @ 2020-12-27 21:14 zeroPatrick 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 进程提供两种虚拟机制:虚拟处理器和虚拟内存。 在进程看来它在独占处理器且拥有整个系统的全部内存资源。 同一进程的不同线程可以共享内存,但拥有各自的虚拟处理器。 不同进程之间内存空间是独立的。 阅读全文
posted @ 2020-12-27 20:37 zeroPatrick 阅读(74) 评论(0) 推荐(0) 编辑
摘要: Linux的进程、线程、文件描述符是什么 转自:https://github.com/ZeroPatrick/fucking-algorithm/blob/master/%E6%8A%80%E6%9C%AF/linux%E8%BF%9B%E7%A8%8B.md 说到进程,恐怕面试中最常见的问题就是线 阅读全文
posted @ 2020-12-27 20:32 zeroPatrick 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 1、TASK_RUNNING:(R)进程当前正在运行,或者正在运行队列中等待调度。只有在该状态的进程才可能在CPU上运行,同一时刻可能有多个进程处于可执行状态。 2、TASK_INTERRUPTIBLE:(S)进程处于睡眠状态,处于这个状态的进程因为等待某事件的发生(比如等待socket连接、等待信 阅读全文
posted @ 2020-12-27 20:14 zeroPatrick 阅读(354) 评论(0) 推荐(0) 编辑
摘要: PCB(PCB Process Control Block):用于描述进程的当前情况以及控制进程运行的全部信息。 PCB一般包括: 1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整形数字 2.特征信息:一般分系统进程、用户进程、或者内核进程等 3.进程状态: 阅读全文
posted @ 2020-12-27 19:27 zeroPatrick 阅读(421) 评论(0) 推荐(0) 编辑
摘要: [转载]原链接:https://blog.csdn.net/qq_36898043/article/details/79574153 Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,S 阅读全文
posted @ 2020-12-27 18:16 zeroPatrick 阅读(179) 评论(0) 推荐(0) 编辑
摘要: //shared_ptr 源码中的对象引用次数 自增的实现,代码位于 memory文件中, //其中 _MT_INCR 的定义是:#define _MT_INCR(x) _INTRIN_RELAXED(_InterlockedIncrement)(reinterpret_cast<volatile 阅读全文
posted @ 2020-12-27 16:36 zeroPatrick 阅读(840) 评论(0) 推荐(1) 编辑
摘要: 转载自:https://www.cnblogs.com/lfri/p/12422423.html 一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆中的10000个就是最大的10000个。时间复杂 阅读全文
posted @ 2020-12-27 00:25 zeroPatrick 阅读(129) 评论(0) 推荐(0) 编辑