操作系统

计算机中的存储器们

计算机当中包含的存储器可以分为随机存储器(RAM)和只读存储器(ROM)(好像硬盘也能叫存储器,但本文不讨论)。RAM的特点是要持续供电才能保存数据,可读可写,而ROM就算断电,也不会丢失数据,而且是只读的。我们打开机箱的盖子,罗列一下所有的RAM和ROM,首先主板上有一根或者几根4G/8G的RAM,还有一个CMOS,它也是RAM,显卡上面有2G的RAM(就是显存),还有R

CPU怎样对存储器们进行读写?

在了解了计算机中的存储器之后,紧接着我们会有一些问题:CPU是怎样去访问内存地址空间的某一个地址的呢?接下来会以8086cpu架构作为例子来进行介绍(8086是老古董了,现代的CPU有i5架构的,还有i7架构的),之所以选择8086是因为它结构比较简单,适合上手,通过它学习到的概念,同样可以对其他CPU进行举一反三。CPU要读写存储器,总得需要有导线把它们连在一起吧?在计算

操作系统思考 第三章 虚拟内存

第三章 虚拟内存作者:Allen B. Downey原文:Chapter 3 Virtual memory译者:飞龙协议:CC BY-NC-SA 4.03.1 简明信息理论比特是二进制的数字,也是信息的单位。一个比特有两种可能的情况,写为0或者1。如果是两个比特,那就有四种可能的组合,00、01、10和11。通常,如果你有b个比特,你就可以表示2 b个值之一。一个字节

一种大型开放式软件系统的设计方法

什么是开放式软件系统本文试图提出一种模型和规则,使得采用这种模型规则的软件开发者,能够更轻松地组织起大规模软件系统的设计和开发实现。角色开放式软件系统首先是一个软件系统,也需要根据需求来设计。而需求的抽象层次有高有低,根据满足的需求层次高低来划分,开放式软件系统有三个主要角色:系统设计者:提供软件系统基础功能设计,例如,操作系统中的文件系统,IPC 机制,硬件抽象,等等的工

操作系统思考 第四章 文件和文件系统

第四章 文件和文件系统作者:Allen B. Downey原文:Chapter 4 Files and file systems译者:飞龙协议:CC BY-NC-SA 4.0当一个进程运行完毕(或崩溃)时,任何储存在主存的数据都会丢失。但是储存在机械硬盘(HDD)或固态硬盘(SSD)的数据是“持久”的。也就是说,它在进程结束之后,甚至关机之后仍旧存在。机械硬盘比较复杂。数

操作系统思考 第六章 内存管理

第六章 内存管理作者:Allen B. Downey原文:Chapter 6 Memory management译者:飞龙协议:CC BY-NC-SA 4.0C提供了4种用于动态内存分配的函数:malloc,它接受表示字节单位的大小的整数,返回指向新分配的、(至少)为指定大小的内存块的指针。如果不能满足要求,它会返回特殊的值为NULL的指针。calloc,它和malloc

操作系统思考 第零章 前言

第零章 前言作者:Allen B. Downey原文:Chapter 0 Preface译者:飞龙协议:CC BY-NC-SA 4.0在许多计算机科学的课程中,操作系统都是高级话题。学生在上这门课之前,它们已经知道了如何使用C语言编程,他们也可能上过计算机体系结构(组成原理)的课程。通常这门课的目标是让学生们接触操作系统的设计与实现,并带有一些他们未来在该领域所研究的隐含

操作系统思考 第八章 多任务

第八章 多任务作者:Allen B. Downey原文:Chapter 8 Multitasking译者:飞龙协议:CC BY-NC-SA 4.0在当前的许多系统上,CPU包含多个核心,也就是说它可以同时运行多个进程。而且,每个核心都具有“多任务”的能力,也就是说它可以从一个进程快速切换到另一个进程,创造出同时运行许多进程的幻象。操作系统中,实现多任务的这部分叫做“内核”

操作系统思考 第七章 缓存

第七章 缓存作者:Allen B. Downey原文:Chapter 7 Caching译者:飞龙协议:CC BY-NC-SA 4.07.1 程序如何运行为了理解缓存,你需要理解计算机如何运行程序。你应该学习计算机体系结构来深入理解这个话题。这一章中我的目标是给出一个程序执行的简单模型。当程序启动时,代码(或者程序文本)通常位于硬盘上。操作系统创建新的进程来运行程序,之后

操作系统思考 第九章 线程

第九章 线程作者:Allen B. Downey原文:Chapter 9 Threads译者:飞龙协议:CC BY-NC-SA 4.0当我在2.3节提到线程的时候,我说过线程就是一种进程。现在我会更仔细地解释它。当你创建进程时,操作系统会创建一块新的地址空间,它包含text段、static段、和堆区。它也会创建新的“执行线程”,这包括程序计数器和其它硬件状态,以及运行时栈