![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解计算机系统
practicePLUS
你的目标到底是什么
展开
-
重点 总结: 计算机系统漫游
操作系统在计算机系统中处于计算机硬件和用户之间的位置1.信息就是 (位+上下文)#-------> hello.c #include<stdio.h> int mian(){ printf("hello , world\n"); return 0; } /* 这个源程序实际上由0和1组成的序列,每8位为一组,称为字节 * 每个字节表示程序中的某个文本字符...转载 2018-05-29 15:58:39 · 196 阅读 · 0 评论 -
生产者/消费者模式
★简介 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取...转载 2018-06-02 17:57:14 · 167 阅读 · 0 评论 -
读者—写者问题
读者写者是一个非常著名的同步问题。读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。问题描述有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:①允许多个读者可以...转载 2018-06-02 20:48:41 · 4070 阅读 · 0 评论 -
深入理解计算机系统 实现一个小型web服务器
1. Web基础 web客户端和服务器之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议)。一个web客户端(即浏览器)打开一个到服务器的因特网连接,并且请求某些内容。服务器响应所请求的内容,然后关闭连接。浏览器读取这些内容,并把它显示在屏幕上。 对于web客户端和服务器而言,内容是与一个MIME类型相关的字节序列。常见的MIME类型: MIME类型 描述 t...转载 2018-07-22 11:28:03 · 796 阅读 · 0 评论 -
Main函数中的argc和argv应用举例
例1:打开指定路径下的一个文本文件,读取其内容,并将其写入到指定路径下的另一个文件当中。其中,采用argv来传递输入文件路径和输出文件路径。参考代码如下:#include "stdafx.h" #include "iostream" #include "fstream" using namespace std; int _tmain(int argc, char* argv[]) { ...转载 2018-06-01 10:41:00 · 1050 阅读 · 0 评论 -
系统级I/O
关于I/O可以先参考这些文章,但是这里可能还是有所不同。分析系统级别的I/O有什么不一样的地方。文件I/O高级I/O标准库I/O 开篇介绍了三个级别的I/O的区别之处。所有语言的运行时系统都提供执行I/O的较高级别的工具。例如,标准I/O库;在UNIX系统中,是通过使用由内核提供的系统级I/O函数来实现这些较高级别的I/O函数的。介绍UNIX I/O和标准I/O的一般概念,展示在C程序中如何...转载 2018-06-01 11:53:03 · 231 阅读 · 0 评论 -
并发编程
1、基于进程的并发编程使用fork()、exec()、waitpid()函数。例如构造一个并发服务器的自然方法就是:在父进程中接受客户端的连接请求,然后创建一个新的子进程来为每个新客户端提供服务。需要注意的点:1、父进程创建子进程后获得了描述符表的完整副本,它需要关闭描述符32、父进程由于要使服务工作交接给子进程,故需要关闭其已连接描述符4(由于父子进程中的已连接描述符都指向同一个文件表,如果父进...原创 2018-06-02 14:34:59 · 1219 阅读 · 0 评论 -
页面置换、作业调度、进程调度小剖析
页面置换、作业调度和进程调度他们之间有很多相似的地方,作业跟进程调度之间尤为相似,之前一直搞不清他们之间的区别跟联系,你是不是也跟我有一样的感受呢?看完这篇文章或许会让你对他们有更清晰的认识。页面置换算法:1,先进先出:淘汰最早进入cache的信息块。2,最近最久未使用:淘汰近期使用频率最低的信息块。3,随机替换:用随机数发生器随机产生一个信息块号,然后淘汰掉。4:优化替换:此方法必须先执行一次程...转载 2018-06-24 17:23:07 · 327 阅读 · 0 评论 -
重点 操作系统是什么
操作系统的定义:操作系统是一个控制程序:1、它是一个系统软件2、控制程序执行过程,防止错误和计算机的不当使用3、执行用户程序,给用户程序提供各种服务4、方便用户使用计算机系统操作系统是一个资源管理器:1、是应用程序与硬件之间的中间层2、管理各种计算机软硬件资源3、提供访问计算机软硬件资源的高效手段4、解决资源访问冲突,确保资源公平使用操作系统的地位操作系统软件的分类:操作系统内核的特征:1、并发:...原创 2018-06-20 10:16:09 · 1260 阅读 · 0 评论 -
文件管理
转自:https://blog.csdn.net/Xiongchao99/article/details/749107941、Unix/Linux系统的目录结构答:Unix/Linux系统的目录是带链接树形目录结构,带链接树形目录结构又称非循环图目录结构,它是指访问一文件(或目录)可以有多条路径。一般常说UNIX的文件系统是树形结构,其实是指带链接的树形结构,而不是纯树形目录结构。2、Linux下...转载 2018-07-10 11:30:03 · 272 阅读 · 0 评论 -
分段和分页
操作系统面试题:https://blog.csdn.net/hackbuteer1/article/details/6787354 一. 分页存储管理 1.基本思想 用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。 2. 分页存储管理的地址机构 15 ...转载 2018-07-20 14:40:32 · 980 阅读 · 0 评论 -
什么是死锁及死锁的必要条件和解决方法
转自1、:http://blog.163.com/yanenshun@126/blog/static/128388169200982444858590/?fromdm&fromSearch&isFromSearchEngine=yes 2、 /blog.csdn.net/ls5718/article/details/51896159 进程死锁及解决办法 一、要点提示 ...转载 2018-05-29 16:10:10 · 1594 阅读 · 0 评论 -
第二章、信息的表示和处理
现代计算机存储和处理的信息以二值信号表示。这些微不足道的二进制数字,或者称为位(bit),奠定了数字革命的基础。孤立的讲,单个的位不是非常有用。然而,当把位组合在一起,再加上某种 解释,即给不同的可能 位模式 赋予含义,我们就能表示任何有限集合的元素。 一、数值的表示 1. 1 数值的编码 数值的类型主要分为2种:整数 和 浮点数。 编码的方式主要分为3种:无符号编码、补转载 2018-05-29 15:58:44 · 330 阅读 · 0 评论 -
重点 第七章 链接
1.静态链接 为了构造可执行文件,链接器必须完成两个主要任务: ● 符号解析,目标文件定义和引用符号,每个符号对应于一个函数、一个全局变量或一个静态变量(即C语言中任何以static属性声明的变量)。符号解析的目的是将每个符号引用正好和一个符号定义关联起来。 ● 重定位,编译器和汇编器生成从地址0开始的代码和数据节。链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些...转载 2018-05-29 15:59:08 · 308 阅读 · 0 评论 -
重点 第八章 异常控制流、进程线程、处理机调度算法、信号
异常控制流控制转移控制流系统必须能对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获,也不一定和程序的执行相关。现代系统通过使控制流 发生突变对这些情况做出反应。我们称这种突变为异常控制流( Exceptional Control Flow,ECF)异常控制流发生在系统的各个层次。理解ECF很重要理解ECF将帮助你理解重要的系统概念。理解ECF将帮助你理解应用程序如何与操作系统交互 通过...转载 2018-05-29 15:59:03 · 1045 阅读 · 0 评论 -
重点 第九章 虚拟内存
第九章-----虚拟内存 系统中的进程共享CPU和主存资源,但存储器空间是有限的,而且还容易被破坏。现代系统提供了一种对主存的抽象,称为虚拟存储器,以更有效地管理存储器。虚拟存储器将主存看作磁盘上的地址空间的高速缓存,为每个进程提供了一致的地址空间,并保护进程的地址空间不被其他进程破坏。 为了更有效地管理内存并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟内存(VM...转载 2018-05-29 15:59:13 · 452 阅读 · 0 评论 -
第三章 程序的机器级表示
机器级代码计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重要:1、指令集体系结构(Instruction set architecture ISA)它定义了处理器状态、指令的格式,以及每条指令对状态的影响。IA32将程序的行为描述成好像每条指令时按顺序执行的,一条指令结束后,下一条再开始。(实际上处理器并发地执行许多指令,但是可以采取...转载 2018-05-29 15:58:49 · 1026 阅读 · 0 评论 -
第五章 优化程序性能
写程序的最主要目标就是使它在所有可能的情况下都正确工作。程序员必须写出“清晰简洁”的代码,读懂、理解、修改 代码。 编写高效程序:1. 选择合适的算法和数据结构2. 编写出编译器能够有效优化以转换成高效可执行代码的源代码。3. 针对运算量特别大的计算,并行计算(将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并...转载 2018-05-29 15:58:53 · 631 阅读 · 0 评论 -
第六章 存储器层次结构
存储器层次结构6.1 存储技术6.2 局部性6.3 存储器层次结构6.4 高速缓存存储器6.5 编写高速缓存友好的代码6.7 小结6.8 关于磁盘的补充讲解 好的程序代码不仅要有好的算法,对计算机硬件的充分利用也是很关键的一步。 存储器系统(memorysystem)是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快...转载 2018-05-29 15:58:58 · 690 阅读 · 0 评论 -
Posix 信号量与System v信号量的区别
在回答这个问题之前,首先要先了解什么是Posix,什么又是System V。 简要的说,Posix是“可移植操作系统接口(Portable Operating System Interface )的首字母简写,但它并不是一个单一的标准,而是一个电气与电子工程学会即IEEE开发的一系列标准,它还是由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准。而System v是Unix操作系...转载 2018-07-27 16:31:01 · 714 阅读 · 0 评论