操作系统
gentleman_zh
这个作者很懒,什么都没留下…
展开
-
死锁
一、死锁概念及产生原理概念:多个并发进程因争夺系统资源而产生相互等待的现象。原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。 本质原因: 1)、系统资源有限。 2)、进程推进顺序不合理。二、死锁产生的4个必要条件 1、互斥:某种资源一次只允许一个进程访问,即该资...转载 2019-04-11 19:48:59 · 247 阅读 · 0 评论 -
内核态与用户态
一、内核态与用户态概念当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。二、区别 void testfork(){ if...转载 2019-04-15 20:48:58 · 216 阅读 · 0 评论 -
进程间的通讯方式
1.共享存储器系统 1.基于共享数据结构的通信方式。(仅适用于传递相对少量的数据,通信效率低,属于低级通信) 2.基于共享存储区的通信方式2.管道通信系统 管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件(pipe文件)管道机制需要提供一下几点的协调能力: 1.互斥,即当一个进程正在对pipe执行读/写操作时,其它进程必须等待...原创 2019-04-12 22:06:07 · 168 阅读 · 0 评论 -
一个程序从源代码到可执行程序的过程
一个源程序到一个可执行程序的过程:预编译(.i, .ii(c++))、编译(.s)、汇编(.o)、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。链接中,分为静态链接和动态链接,本文主要是静态链接。一、预编译:主要处理源代码文件中的以“#”开头的预编译指令。1.删除所有的#define,展开所有的宏定义。2.处理所...转载 2019-04-10 21:13:48 · 2044 阅读 · 0 评论 -
静态链接库、动态链接库
一、库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .sog++ -c hello...转载 2019-04-10 22:05:44 · 258 阅读 · 0 评论