操作系统的积累
不断完善的少年
干什么都需要不断完善。
馒头比外卖更努力。
展开
-
linux中进程在内存中的布局
一个典型的Linux C程序内存空间由如下几部分组成:代码段(.text):这里存放的是CPU要执行的指令。代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段是只读的,防止程序由于错误而修改自身的指令。初始化数据段(.data):这里存放的是程序中需要明确赋初始值的变量,例如位于所有函数之外的全局变量:int val=100。需要强调的是,以上两段都是位于程序的可执行文转载 2016-04-06 20:41:24 · 414 阅读 · 0 评论 -
原码, 反码, 补码 详解(二)
一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的转载 2016-05-31 14:53:27 · 438 阅读 · 0 评论 -
原码, 反码, 补码 详解(一)
为什么要用?计算机内部采用二进制表示数值。如十进制数10用二进制数表示为1010。设计算机字长为8,即1Byte。最高位表示符号,0为正,1为负来看看用原码表示的数在进行加减乘除运算是会有什么问题:十进制:1-1=1+(-1)=0原码:(0000 0001)-(0000 0001)=(0000 0001)+(-0000 0001)=(0000 0001)原+(1000 0001转载 2016-05-31 15:05:33 · 1134 阅读 · 0 评论 -
linux中进程间如何通信的?
因为进程和线程不一样,他们各自的地址空间不同,互不干扰,主要有以下通信方式。1,共享内存:进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,当然会产生竞争条件,所以需要同步(例如使用喜好量),这种情况同样适用于线程。2,信号量:作为同步的一种办法,当然也算是通信的一种了,因为多个进程共同依靠信号量来改变自己的状态,例如一个只保存0,1的信号量,一个进程原创 2016-04-08 17:48:04 · 272 阅读 · 0 评论 -
操作系统分页存储管理
基本概念:系统把程序分成大小相等的块儿---页,也把内存分为大小相等的块儿---物理块,都从零开始编号,把页放进物理页,离散分离,这样利用率高。每个页的地址为逻辑地址包括页号,和页内地址(偏移量),高位页号,低位偏移量,如页号占20位,那么地址空间最多有2的20次方=1M个页,页内地址占12为,那么每个页大小为2的12次方4KB若给定一个逻辑地址为A,页大小L,则 页号P=IN原创 2016-04-19 07:42:47 · 1262 阅读 · 0 评论 -
操作系统进程常见调度算法
1,先来先服务算法。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。2,短作业优先算法。从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。3,优先级调度算法。1)非抢占式:系统一旦把处理机分配给就绪队列中优先权最高的进原创 2016-04-24 23:58:13 · 485 阅读 · 0 评论 -
linux下的线程
一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果转载 2016-04-14 19:58:41 · 461 阅读 · 0 评论 -
linux的下的io
引言:(见现代操作系统)因为linux下的所有设备都以文件存在,如/dev/hd1表示磁盘,/dev/net表示网络这样的特殊文件,每个特殊文件都与它的设备驱动程序关联。当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇lin转载 2016-04-09 15:19:10 · 321 阅读 · 0 评论 -
系统的虚拟地址空间是啥,为什么要使用?
1.虚拟地址空间就是应用程序自己分配的内存大小,映射到物理地址空间,这样物理细节对于应用程序是透明的,并可以通过硬盘增加内存。2.1)物理细节对于应用程序来说是透明的,程序猿不关心细节,比较简单。2)不能直接访问物理空间,比如用户的系统的地址空间完全不同,保证系统的安全性。3)一些内存分配算法的实现,增加了物理内存的利用率。原创 2016-04-12 22:48:19 · 2637 阅读 · 0 评论 -
linux分段分页机制
80x86内存寻址设计三个地址:逻辑地址,线性地址,物理地址。逻辑地址:指向操作数或者指令的地址。使用分段。虚拟地址:是一个32位无符号数,最大表示4GB。物理地址:内存芯片级别的地址。MMU使用分段单元硬件把逻辑地址转换为虚拟地址,再使用分页单元硬件把虚拟地址转换为物理地址。分段机制及其转换:逻辑地址包括:段标识符(16bit) + 相对位置偏移量(32bit)。原创 2016-05-09 07:14:59 · 339 阅读 · 0 评论