计算机系统
freshman94
这个作者很懒,什么都没留下…
展开
-
深入理解静态链接和动态链接
符号与符号表每个可重定义文件o都有一个符号表,它包含m定义和引用的符号(外链接的)的信息,即以下的全局符号和外部符号。三种不同的符号:全局符号。由文件o定义并能被其它模块引用,对应于非静态的全局变量和函数外部符号。由其它文件定义并能被文件o引用的全局符号,称为外部符号。局部符号。只能被文件定义和引用,对应于static 函数和 static 变量链接器的两个主要任务是:符号解析。...原创 2019-03-24 20:08:41 · 938 阅读 · 0 评论 -
生产者消费者问题
问题描述:缓冲区大小为N,生产者产生物品放到缓冲区,消费者将物品从缓冲区移走互斥关系:对缓冲区得访问需要互斥,包括生产者和生产者之间、消费者和消费者之间、生产者和消费者之间。同步关系:当缓冲区满时生产者进程需要等待,当缓冲区空时消费者进程需要等待。解题思路:用信号量解决生产者消费者问题。互斥:有界缓冲区是一个临界资源,对临界资源得访问需要设置一个信号量mutex同步:设置两个同步信号量...原创 2019-04-12 19:27:28 · 781 阅读 · 0 评论 -
C++实现LRU(最久未使用)缓存算法
LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法。LRU的典型实现是hash map + doubly linked list,双向链表用于存储数据结点,并且它是按照结点最近被使用的时间来存储的。如果一个结点被访问了,我们相信它在接下来的一段时间被访问的概率要大于其它结点。于是,我们把它放到双向链表的头部。当我们往双向链表里插入一个结点,我们也有可能很快就会使用到它,同样把它插...原创 2019-04-12 19:23:49 · 279 阅读 · 0 评论 -
IO是否会一直占用CPU
在进行I/O操作的时候,是将任务交给DMA来处理,请求发出后CPU就不管了,在DMA处理完后通过中断通知CPU处理完成了。I/O操作消耗的cpu时间很少。转载 2019-04-02 11:25:33 · 3537 阅读 · 1 评论 -
磁盘调度算法
SCAN算法SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。C-SCAN算法循环扫描算法。仔细一看,我们会发现,在扫描到最里面的要求服务的序列时,接着会反向,在接下来的很大一部分时间里,应该是没有要求服务的磁道号的,因为之前已经访问过了。也就是说从初始磁道号到最里层的一个磁道号之间的所有序列都已经...原创 2019-04-01 17:11:33 · 1776 阅读 · 0 评论 -
进程的组成部分
在UNIX系统中进程由以下三部分组成:进程控制块PCB数据段正文段进程控制块(PCB)是用来记录进程状态及其他相关信息的数据结构,PCB是进程存在的唯一标志,PCB存在则进程存在。系统创建进程时会产生一个PCB,撤销进程时,PCB也自动消失。UNIX系统为了节省进程控制块所占的内存空间,把每个进程控制块分成两部分。一部分常驻内存,不管进程是否正占有处理器运行,系统经常会对这部分内容进...原创 2019-04-01 17:11:16 · 9784 阅读 · 0 评论 -
操作系统知识小记
快表(TLB)相联存储器(associative memory),也称为按内容访问存储器(content addressed memory)或简称为TLB(Translation Lookaside Buffer)。它是一种不根据地址而是根据存储内容来进行存取的存储器,可以实现快速地查找块表快表就是存放在高速缓冲存储器的部分页表。作为页表的Cache,它的作用与页表相似,但是提高了访问速率。...原创 2019-04-01 17:10:52 · 924 阅读 · 0 评论 -
进程与线程
父进程与子进程:子进程会获得父进程数据空间、堆和栈的副本,但并不和父进程共享这些存储空间部分,而是写时复制。父进程和子进程共享代码段父进程的所有打开文件描述符都被复制到子进程中。若重定向父进程的标准输出,则fork子进程后,子进程的标准输出也被重定向父进程和子进程共享同一文件偏移量共享各种ID属性、继承执行时关闭标志、信号屏蔽、资源限制子进程不继承父进程设置的文件锁,内存锁和某些定时...原创 2019-04-01 17:10:41 · 128 阅读 · 0 评论 -
进程间通信
管道即匿名管道,半双工,只能在具有公共祖先的两个进程间使用。fd[0]为读而打开,fd[1]为写而打开。fd[1]的输出是fd[0]输入。尽管有局限性,半双工管道仍然是最常用的IPC形式。每当在管道中键入一个命令序列,让shell执行时,shell都会为每个命令单独创建一个进程,然后用管道将前一条命令进程的标准输出与后一条命令的标准输入相连接。当有多个进程同时写一个管道(或FIFO)时,常量...原创 2019-04-01 17:09:01 · 199 阅读 · 0 评论 -
进程调度算法
进程调度算法批处理系统:先来先服务(FIFO),最短作业优先分时系统:时间片轮转法,(动态)优先级调度,多级(反馈)队列(1)高响应比优先(Highest Response Ratio First,HRRF)调度算法HRRF调度算法是介于先来先服务算法与最短进程优先算法之间的一种折中算法。先来先服务算法只考虑进程的等待时间而忽视了进程的执行时间,而最短进程优先调度算法只考虑用户估计的进程...原创 2019-04-01 17:11:57 · 2013 阅读 · 0 评论 -
C++实现LRU
LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法LRU的典型实现是hash map + doubly linked list,双向链表用于存储数据结点,并且它是按照结点最近被使用的时间来存储的。如果一个结点被访问了,我们有理由相信它在接下来的一段时间被访问的概率要大于其它结点。于是,我们把它放到双向链表的头部。当我们往双向链表里插入一个结点,我们也有可能很快就会使用到它,同样把...原创 2019-04-01 12:10:52 · 2200 阅读 · 0 评论 -
读者-写者问题
问题描述有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:①允许多个读者可以同时对文件执行读操作;②只允许一个写者往文件中写信息;③任一写者在完成写操作之前不允许其他读者或写者工作;④写者执行写操作前,应让已有的读者和写者全部退出。读优先:semaph...原创 2019-04-01 12:08:38 · 329 阅读 · 0 评论 -
什么情况下使用多线程
如果你的应用程序需要采取以下的操作,那么你尽可在编程的时候考虑多线程机制:(1) 连续的操作,需要花费忍无可忍的过长时间才可能完成(2) 并行计算(3) 为了等待网络、文件系统、用户或其他I/O响应而耗费大量的执行时间所以说,在动手之前,先保证自己的应用程序中是否出现了以上3种情形。为什么需要多线程(解释何时考虑使用线程)从用户的角度考虑,就是为了得到更好的系统服务;从程序自身的角度考...原创 2019-04-01 12:05:19 · 13926 阅读 · 0 评论 -
Linux下的I/O模型
I/O模型的引出我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer。如下图所示: 一个输入操作分为两个阶段:(1) 等待数据准备好;(2)从内核向进程复制数据 在整个请求过程中,数据输入至buffer需要时间,而从buffer复制数据至进程也需要时间。因此根据在这两段...原创 2019-04-01 12:03:06 · 127 阅读 · 0 评论 -
计算机知识小记
临界区临界区是一种防止多个线程同时执行一个特定代码节的机制。在多核上运行时,锁或临界区会导致其余处理器空闲而只允许一个处理器执行持有锁的那个线程,这是一个串行的过程,会影响性能。CPU与核CPU的组成:平常大家看到的CPU成品实际上是有CPU处理器芯片(银色金属盖下边),散热盖(银色金属盖)、PCB板组成;早期CPU受限于工艺、技术等限制,一个CPU处理器芯片只能封装一个处理核心,随着技术的...原创 2019-04-04 17:17:43 · 123 阅读 · 0 评论 -
理解Memory Barrier(内存屏障)
本文例子均在 Linux(g++)下验证通过,CPU 为 X86-64 处理器架构。所有罗列的 Linux 内核代码也均在(或只在)X86-64 下有效。本文首先通过范例(以及内核代码)来解释 Memory Barrier,然后介绍一个利用 Memory Barrier 实现的无锁环形缓冲区。Memory Barrier 简介程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不...转载 2019-04-04 17:06:06 · 250 阅读 · 0 评论 -
Linux和Windows间进程通信方式
Linux进程间通信:管道(匿名与命名)、信号、消息队列、共享内存、信号量、套接字(socket)Linux线程间通信:互斥量(mutex),信号量,条件变量Windows进程间通信:管道(匿名与命名)、消息队列、共享内存、信号量 、套接字(socket)、剪贴板Windows线程间通信:互斥量(mutex),信号量(semaphore)、消息(Message)、事件(event)...原创 2019-04-12 19:28:19 · 348 阅读 · 0 评论