
操作系统
bxw1992
这个作者很懒,什么都没留下…
展开
-
指令流水线
将一条指令分割成多个子操作,子操作是有顺序的,后面的子操作依赖前一个子操作的结果,因此,子操作必须是串行的。它优化的地方在于,每个子操作有专门的硬件,如果当前指令的子操作的完成了,就可以执行下一个指令的子操作,显现出并行特性。 流水线技术把处理器的一条指令操作分解为若干个可以独立处理的子操作(如取指令、分析指令、执行指令),每个子操作在一个专门的硬件上进行,若干条转载 2017-08-13 12:10:30 · 2016 阅读 · 0 评论 -
gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接
一般高级语言程序编译的过程:预处理、编译、汇编、链接。gcc在后台实际上也经历了这几个过程,我们可以通过-v参数查看它的编译细节,如果想看某个具体的编译过程,则可以分别使用-E,-S,-c和 -O,对应的后台工具则分别为cpp,cc1,as,ld。下面我们将逐步分析这几个过程以及相关的内容,诸如语法检查、代码调试、汇编语言等。1、预处理预处理是C语言程序从源代码变成可执转载 2017-08-23 14:47:02 · 774 阅读 · 0 评论 -
内存管理理解
背景:内存有限,不能将所有的程序都放到内存里,这时候可以用磁盘存储程序,这部分磁盘叫交换空间(swap space)。当发生进程切换的时候,内存与交换空间就要发生数据交换一满足需求。所以啊,进程的切换消耗是很大的。其中就会分一部分磁盘空间用作交换,叫做swapspace。其实就是一段临时存储空间,内存不够用的时候就用它了,虽然它也在磁盘中,但省去了很多的查找时间啊。当发生进程切换的时候,内存与原创 2017-09-18 16:43:19 · 452 阅读 · 0 评论 -
自旋锁和互斥锁
自旋锁它是为为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里转载 2017-09-18 17:07:02 · 497 阅读 · 0 评论 -
用户态和内核态
思考:每个进程都需要独立的资源分配,内核也是程序(进程的概念),因此也要独立分配资源。而且为了系统的安全和可靠,访问底层的硬件资源,只能由操作系统来发起,用户程序不允许直接访问硬件资源。 1、从功能角度看用户空间和内核空间 内核空间主要是指操作系统运行时所使用的用于程序调度、虚拟内存的使用或者连接硬件资源等的程序逻辑。 为何需要内存空间和用户空转载 2017-09-27 18:15:06 · 565 阅读 · 0 评论 -
线程上下文切换与进程上下文切换
1、进程进程上下文包含了进程执行所需要的所有信息。用户地址空间:包括程序代码,数据,用户堆栈等;控制信息:进程描述符,内核栈等;硬件上下文:(注意中断也要保存硬件上下文只是保存的方法不同)。2、进程切换分3步a.切换页目录以使用新的地址空间b.切换内核栈c.切换硬件上下文3、线程切换 对于linux来说,线程和进程的最大区别就在于地址空间。转载 2017-09-27 18:29:24 · 2020 阅读 · 0 评论 -
死锁产生的原因和解决办法
死锁的条件 互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。 不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使转载 2017-10-25 19:37:33 · 759 阅读 · 0 评论 -
存储管理之页式、段式、段页式存储
https://www.cnblogs.com/suncoolcat/p/3400353.html转载 2017-12-24 13:40:00 · 490 阅读 · 0 评论