Operation System
文章平均质量分 52
Firehotest
这个作者很懒,什么都没留下…
展开
-
Notes: 计算机启动过程 (Booting of Computer)
计算机启动时,首先启动主板上的BIOS程序,BIOS程序会检查链接到计算机的所有设备,包括内存的数量、I/O设备是否响应,还有是否有新设备的链接,如果有,则配置新设备。然后,BIOS查询CMOS上的设备清单,查询需要启动哪些设备,从哪个设备寻找需要启动操作系统。如果是是从磁盘开始启动的话,则会首先访问整个磁盘的第一个扇区,我们称之为boot sector。注意,这是整个磁盘的Boot sector原创 2016-08-29 04:05:15 · 941 阅读 · 0 评论 -
Operation System: 多线程笔记
这篇文章主要记录一些关于多线程的比较零散的内容。一、关于数据的可见性 & 内存屏障根据内存模型,数据被某一个核所利用之后,会存在其cache甚至寄存器当中。当这段程序更新这个数据之后,未必马上写入内存。此时,如果另一个线程(在另一个核上运行的内核态线程)读取这个数据,可能读到的还是旧的值。这时候,这个数据就是对另外的一个线程是不可见的。那么,vola原创 2017-11-10 03:06:19 · 426 阅读 · 0 评论 -
Operation System: Exception (操作系统的异常控制流)
异常控制流是程序运行时,应对一些函数调用或者分支跳转都无法处理的事情:I/O中断(ctrl+c)或者计时器中断(进程切换)所创立的一套机制。异常分为同步异常和异步异常(中断):异步异常:CPU无法预料是否会发生的异常,也称作中断。如I/O中断(ctrl+c)或者计时器中断(进程切换)。同步异常:CPU能预见有可能发生的异常。如:page fault(读取数据的时原创 2017-03-05 04:43:35 · 972 阅读 · 0 评论 -
Operation System: Multi-thread 多线程 v.s. 多进程
篇初,问一个很经典的问题,线程和进程的区别是啥呀?首先,从做的事情而言,线程之间通常会share共同的逻辑代码,而进程之间却很少会share逻辑的。这从Java的job - worker模式的多线程环境便可得知。其次,从资源角度而言,线程没有自己独立的地址空间,属于同一个进程的线程共享一个线程的地址空间。而每一个单独的进程都有自己的地址空间。进程之间的通信需要通过进程间通信(I原创 2017-03-05 04:06:27 · 476 阅读 · 0 评论 -
基础知识Notes: 字符串编码(ASCII, Unicode and UTF8)
总结陈述:ASCII码是用来表示英语字符的编码。只用1个字节(8位)。所以总共有256种可能。虽然实际而言只规定了128种,但是其每个字符的表示依然需要1个字节。而且,最高位永远为0.UTF-8是Unicode码的优化方案中采用得较为广泛的方案。Unicode设计的动机:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式原创 2017-02-20 07:50:23 · 949 阅读 · 0 评论 -
Notes: CPU and Memory of O.S.
最近在复习本科的《现代操作系统》课本,一口气看完了3章,略有所感,故写下此篇。使用操作系统的动机是它可以:1/ 抽象物理底层的硬件,提供用户使用硬件的便利;2/ 自动管理整合资源;对运行的程序的抽象是:进程/ 线程。这在这篇文章会详细叙述:对主存的抽象是:地址空间。同时,一直以来,存储器的容量增长始终赶不上信息量的增长。大小远远落后于程序平均占用主存大小原创 2016-08-27 03:26:23 · 1295 阅读 · 0 评论 -
Operation System: Cache, False Share and Locality
缓存分为L1,L2和L3缓存。L1和L2缓存通过在每个核的片上,L3缓存通常是共享的。通过缓存也称作SRAM,两者可以不加区分。缓存的读取延时一般是2ns. 缓存的结构:首先,分为不同的集合(Set),每个集合中有若干缓存行(Cache Line)(1或者多个)。如图(来源:http://wdxtub.com/2016/04/16/thin-csapp-3/):转载 2017-02-28 14:24:12 · 586 阅读 · 0 评论 -
Notes: Memory Abstraction in O.S. (操作系统的内存管理)
DRAM是操作系统中主要的一部分,由于速度快的内存造价过于昂贵,所以对内存分为了不同的等级。最快的寄存器,CPU内部,读取无延时,1ns左右,32位的CPU的寄存器大小一般是32*32 bits。其次是高级缓存,L1集成在CPU内部,同样无延时,一般大小是16KB。在Intel结构中,L2也是位于主板上,通过高级缓存总线与CPU相连,一般命中所需时间是两个时钟周期,大约是2ns。再次的是主存(DR原创 2016-08-28 04:08:48 · 1533 阅读 · 0 评论 -
Operation System: 关于寄存器和栈
对于Intel架构的处理器,从8位的寄存器(8位的CPU)一直演进到如今的64位(64位寄存器),为了承上启下,到现在的64位的CPU还是可以运行当年8位CPU的程序,而如今的寄存器当中,依然是可以从64位中分出8位来应对8位的程序。如今的寄存器如下图所示:(图片来源:http://wdxtub.com/2016/04/16/thin-csapp-2/):如转载 2017-02-28 11:32:40 · 877 阅读 · 0 评论 -
Operation System Notes: 数制基础
Integer: 整型数一般的整型数是32位(4Bytes),长整型则是64位(8Bytes)。另外还有两个8Bytes的类型是:存储地址的指针和double。(双精度浮点)对于32位的整型而言,有符号和没符号的范围分别如下。1)无符号0 - 2^32 - 12)有符号正:0 - 2^31 - 1(因为0占了一个数的表示)。转载 2017-02-28 09:25:49 · 438 阅读 · 0 评论 -
Notes: Disk Abstraction -- File System(操作系统的文件系统)
注:以下图片来自《鸟哥的Linux私房菜》操作系统的三大重要抽象:对程序的抽象 —— 进程、线程; 对内存的抽象 —— 地址空间;对磁盘的抽象 —— 文件系统。正是文件系统的抽象,使用户只需要关注文件的组织形式和metadata(权限、属性)便可以管理文件了。磁盘的物理组成:但在正式将文件系统前,还是很有必要先说说磁盘的物理实现的。一个典型的磁盘由很多个磁头和盘原创 2016-08-29 02:16:29 · 1057 阅读 · 0 评论 -
Notes: Process in Operation System and Dead Lock 操作系统中的进程和死锁问题
进程是CPU一系列动作的抽象。下面这个例子很好地说明了程序和进程的关系[1]:一个好厨艺的父亲正在为他的女儿制作生日蛋糕。做蛋糕的食谱,就是程序,父亲就是CPU,而做蛋糕的原料(面粉、鸡蛋等)就是输入数据。进程就是父亲阅读食谱、取来原料以及烘制蛋糕等一系列动作的总和。进程有三种状态:运行、就绪以及阻塞。三种状态的转换关系如图[1]:进程从运行到阻原创 2016-08-27 02:20:25 · 660 阅读 · 0 评论 -
Operation System: Locks Classification Perspectives
本文主要参考:http://www.importnew.com/19472.html对于锁的认识,我个人认为需要分为几个角度进行总结。首先,是基础角度,从最普遍的分类开始说起。接着,从公平锁/非公平锁、可重入锁、乐观锁(CAE)/悲观锁和共享锁/排它锁。基础分类:互斥锁 (mutex)、信号量锁 (semaphore)、读写锁(read/write lock)以转载 2017-11-03 10:17:40 · 317 阅读 · 0 评论