操作系统
文章平均质量分 83
FreeeLinux
A3GM5H3647LPD4QVYMYAER2S47P4WZ2UKBXBCGZES2V62WEY2HULQA
展开
-
进程的挂起状态详细分析
通常我们所认为的进程有五大状态,新建态,就绪态,阻塞态,运行态,退出态。 下面是示意图: 事实上还存在被挂起的进程。 交换的需要 前面图中三个基本状态(就绪态、运行态和阻塞态)提供了一种为进程行为建立模型的系统方法,并指导操作系统的实现。 但是,可以证明往模型中增加其他状态也是合理的。下面考虑一个没有使用虚拟内存的系统,每次执行中的进程必须完全载入内存。因此原创 2016-12-11 00:03:24 · 36467 阅读 · 7 评论 -
Linux下逻辑地址、线性地址、物理地址详细总结
Linux中逻辑地址等于线性地址。为什么这么说呢?因为Linux所有的段(用户代码段、用户数据段、内核代码段、内核数据段)的线性地址都是从 0x00000000 开始,长度4G,这样 线性地址=逻辑地址+ 0x00000000,也就是说逻辑地址等于线性地址了。转载 2017-01-06 12:11:44 · 4387 阅读 · 0 评论 -
【汇编】计算机寄存器介绍
计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个转载 2017-01-06 12:07:05 · 1456 阅读 · 0 评论 -
操作系统内存管理概述
概述存储器分为内存和外存。主存就是内存,外存也称为辅存,就是磁盘,磁带机等外部设备。主存是和CPU通过总线相连的,CPU执行指令需要从内存(即主存,后文同理)从中访问指令和数据。内存被分为了两部分,一部分是系统区(内核子程序占用),一部分是用户区(用户程序、数据)。通常主存的低地址段分给操作系统,高地址段分给用户。我们今天的问题是,操作系统磁盘中的数据怎么装载进内存中呢?对于系统区,当机器开机时,系原创 2017-01-06 16:03:43 · 1532 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
原文地址:http://ifeve.com/disruptor-padding/作者:Trisha 译者:方腾飞 校对:丁一我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文转载 2017-01-09 15:17:10 · 512 阅读 · 0 评论 -
Linux-2.6.32 NUMA架构之内存和调度
http://blog.chinaunix.net/uid-7295895-id-3076420.htmlLinux-2.6.32 NUMA架构之内存和调度 本文将以XLP832通过ICI互连形成的NUMA架构进行分析,主要包括内存管理和调度两方面,参考内核版本2.6.32.9;NUMA架构常见配置选项有:CONFIG_SMP, CONFIG_NUMA,转载 2017-01-10 17:30:38 · 940 阅读 · 0 评论 -
信号量、消息队列、共享内存复习
信号量代码使用信号量实现父子进程间同步:#include <sys/sem.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>union semun { int val; /* Value for SETVAL */ struct sem原创 2017-02-08 11:13:55 · 615 阅读 · 0 评论 -
动态内存管理详解:malloc/free/new/delete/brk/mmap
c 内存获取和释放 malloc/free, calloc/realloc上述8个函数/操作符是c/c++语言里常用来做动态内存的申请和释放的,要理解这些接口,大概需要下面几个维度的了解:1. 了解OS的进程空间模型,一个进程的地址空间,一般划分为内核区、用户区,用户区又划分为栈区、堆区、数据区、代码区。这里的‘堆区’,‘栈区’,‘数据区’,‘内核区’,其实就是一个转载 2016-12-31 11:28:01 · 521 阅读 · 1 评论 -
linux中的分段机制
将物理内存划分为多个段,让操作系统可以使用大于其地址线对应的物理内存(比如正常情况下32位地址线可以访问4G大小的内存,但是有分段后则可访问大于4G的内存)。权限控制,将每个段设置权限位,让不同的程序访问不同的段。 对于linux内核来说,它仅仅只使用了分段机制中的权限控制功能,具体我们可以一起看看是如何做的。转载 2017-01-06 12:04:58 · 835 阅读 · 0 评论 -
线程的概念和模型以及与进程的比较
本博客前面部分转自:http://c.biancheng.net/cpp/html/2593.html线程的基本概念引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程转载 2016-12-18 12:56:40 · 1178 阅读 · 0 评论 -
进程的调度算法
在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。下面介绍几种常用的调度算法。先来先服务(FCFS)调度算法FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入转载 2016-12-18 11:05:11 · 823 阅读 · 0 评论 -
有关进程的典型问题
零:1.请对优化分时系统的调度策略和用于优化多道程序批处理系统的调度策略进行比较。 分时系统关注的是轮转时间,时间限制策略更有效是因为它给所有进程一个较短的处理时间。批处理系统关系的是吞吐量,更少的上下文转换和更多的进程处理事件。因此,最小的上下文转换最搞笑。 2.系统调用的目的是什么?如何实现与操作系统相关的系统调用以及双重模式(内核模式和用户模式)操作相关的系统调用原创 2016-12-11 09:26:34 · 902 阅读 · 0 评论 -
GDB常用调试命令以及多进程多线程调试
今天把所有的GDB常用的调试命令都过了一遍,尤其是多线程调试。所以先做个总结,以免忘记。以后如果有新的有用的命令会继续追加。一:普通命令1.list命令list linenum 显示程序第linenum行周围的程序list function 显示函数名为function的函数的源程序list 显示当前行后原创 2016-12-17 11:07:25 · 9349 阅读 · 2 评论 -
理解虚拟内存机制
原文连接:http://blog.csdn.net/iter_zc/article/details/42644229这个系列会总结计算机,网络相关的一些重要的底层原理。很多底层原理大家上学的时候都学过,但是在学校的时候大部分的同学都是为了应付考试而学习,过几天全忘了。随着工作的时间越久,越体会到这些基础知识的重要性。做技术和练武功一样,当你到了一定的阶段,也会遇到一个瓶颈,突破了你的眼转载 2016-12-21 13:11:08 · 9884 阅读 · 0 评论 -
Linux虚拟地址空间布局以及进程栈和线程栈总结
本文转自多个博客,以及最后有我的总结。我们有单独从头到尾写一个总结的原因是别人已经写得很好了,我不花大量时间是无法达到这水平的。一:Linux虚拟地址空间布局(转自:Linux虚拟地址空间布局) 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在L转载 2016-12-21 18:55:46 · 18195 阅读 · 4 评论 -
Linux有名管道namepipe --C和Python两种实现方式解析
一:什么是有名管道不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO严格遵循先进先出(first in first out),对管道及FIF原创 2016-09-19 21:54:23 · 2279 阅读 · 1 评论 -
Linux管道pipe -- C和Python两种实现方案解析
一:什么是管道管道是Linux 支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。数据的原创 2016-09-19 20:22:46 · 3732 阅读 · 0 评论 -
进程描述和控制 --操作系统精髓与设计
操作系统设计必须满足某些一般性的需求,大多数需求都涉及进程:操作系统必许交替执行多个进程,在合理的相应时间范围内使处理器的使用率最大。操作系统必须按照特定的策略(例如某些函数或应用城居具有较高的优先级)给进程分配资源,同时避免死锁。操作系统可以支持进程间的通信和用户创建进程,它们对构造应用程序很有帮助。一:进程和进程控制块进程的定义:一个正在执行中的程序一个原创 2016-12-10 18:13:23 · 433 阅读 · 0 评论 -
计算机的构成概述 --操作系统设计精髓与设计
一:计算机基本构成计算机有四个主要的结构化部件:处理器(Processor):控制计算机的操作,执行数据处理功能。当只有一个处理器时,它通常指中央处理器(CPU)。内存(Main memory):存储数据和程序。此类存储器通常是易失性的,即当计算机关机时,存储器的内容会丢失。相对于此的是磁盘存储器,当计算机关机时,它的内容不会丢失,内存常也称为实存储器(real memory)或主原创 2016-12-10 11:22:48 · 740 阅读 · 0 评论 -
Posix信号灯和SystemV信号灯解析
暑假那会把UNPv2大概过了一遍,不过没有总结,除了pipe,所以现在都忘得差不多了,趁最近几天学操作系统,边学边回顾一下。信号灯(semaphore)是一种用于提供不同进程间或一个给定进程的不同线程的同步手段的原语。我所知一共有三种类型信号灯:Posix有名信号灯:使用Posix IPC名字标识,可用于进程或现程间的同步Posix基于内存的信号灯:存放在共享内存区,可原创 2016-12-21 22:29:24 · 2265 阅读 · 0 评论