计算机操作系统读书笔记

合集下载

计算机操作系统笔记第一章

计算机操作系统笔记第一章

------------- ——第一章 --------- ——-------操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充,其主要作用是管理好这些设备。

操作系统的目标与应用环境有关。

操作系统的目标:1. 方便性 2. 有效性:提高系统资源的利用率,系统的吞吐量 3. 可扩充性4. 开放性:系统能遵循世界标准规范。

操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地堆各类作业进行调度,以及方便用户使用的程序的集合。

OS作为用户与计算机硬件系统之间接口的含义是:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。

或者说,用户在OS帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序。

OS是铺设在计算机硬件上的多层软件的集合,它们不仅增强了系统的功能,还隐藏了对硬件操作的具体细节,实现了对计算机硬件操作的多个层次的抽象模型。

用户通过命令方式,系统调用方式,图标-窗口方式来实现与操作系统的通信。

处理机管理是用于分配和控制处理机。

主要功能:创建和撤销进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。

进程控制。

进程同步:主要任务是为多个进程(含线程)的运行进行协调,进程互斥式,进程同步式。

进程通信:任务是实现相互合作进程之间的信息交换。

存储器管理主要负责内存的分配和回收。

主要任务:为多道程序的运行提高良好的环境,提高存储器的利用率,方便用户使用,并能从逻辑上扩充内容。

功能:内存分配:主要任务是:(1) 为每道程序分配内存空间,使它们“各得其所”。

(2) 提高存储器的利用率,尽量减少不可用的内存空间( 碎片)。

(3) 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。

(静态分配方式:固定内存大小位置,动态分配方式) 内存保护:主要任务是:①确保每道用户程序都仅在自己的内存空间内运行,彼此互不干扰。

②绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。

操作系统笔记

操作系统笔记

操作系统笔记(总17页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March操作系统的定义:操作系统(Operating System, OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充操作系统的目标和作用在计算机系统上配置操作系统主要目标与计算机系统的规模和应用环境有关。

操作系统的目标方便性硬件只能识别机器代码(0、1)OS提供命令,方便用户使用计算机有效性使CPU、I/O保持忙碌,充分利用使内存、外存数据存放有序,节省空间合理组织工作流程,改善资源利用率,提高吞吐量可扩充性计算机技术的发展:硬件/体系结构/网络/InternetOS应采用层次化结构,便于扩充和修改功能层次和模块开放性支持网络环境,兼容遵循OSI标准开发的硬件和软件操作系统的作用1. 用户与计算机硬件系统之间的接口命令方式用户通过键盘输入联机命令(语言)系统调用方式用户程序通过系统调用,操纵计算机图形、窗口方式用户通过窗口、图标等图形界面操纵计算机2.计算机系统资源管理者4大类资源:处理机;存储器;I/O设备;信息(文件:程序、数据)3.对计算机资源的抽象(扩充机器)裸机:只有硬件的计算机,难以使用虚机器:在裸机增加软件(OS等),功能增强,使用方便推动操作系统发展的主要动力1.不断提高计算机资源利用率早期计算机很昂贵,为提高资源利用率,产生了批处理系统2.方便用户为改善用户上机、调试程序时的条件,产生了分时系统3.器件的不断更新换代OS随之更新换代,如:8位->16位->32位4.计算机体系结构的不断发展单处理机OS->多处理机OS->网络操作系统操作系统的发展过程无操作系统时代OS尚未出现,人们如何使用计算机人工操作方式人工操作方式的缺点用户独占全机CPU等待人工操作结果:资源利用率低下脱机输入输出系统低速设备纸带机/卡片机高速设备磁带/磁盘I/O速度提高,缓解了I/O设备与CPU的速度矛盾主机:用于计算的主计算机外围机:也是计算机,处理输入输出,使之不占用主机CPU时间外围机控制输入/输出输入:低速设备->高速设备输出:高速设备->低速设备输入和输出使用独立于主机的外围机,不占用主机的CPU时间,是脱机过程,因此叫做脱机输入/输出方式单道批处理系统计算机发展的早期,没有任何用于管理的软件,所有的运行管理和具体操作都由用户自己承担,任何操作出错都要重做作业,CPU的利用率甚低。

哈工大操作系统读书笔记

哈工大操作系统读书笔记

哈工大操作系统读书笔记在哈尔滨工业大学的计算机科学与技术专业的学习中,操作系统是我们学科的核心课程之一。

为了更好地掌握操作系统的基本原理和技术,我认真阅读了相关教材,并做了一些笔记。

一、操作系统的基本概念1. 操作系统定义:操作系统是控制计算机硬件和软件资源,管理用户程序运行,提供用户界面和应用程序开发环境的一种系统软件。

2. 操作系统功能:主要功能包括处理机管理、存储管理、文件管理、设备管理以及用户界面。

二、处理机管理1. 进程的定义:进程是程序的一次执行,是系统进行资源分配和调度的基本单位。

2. 进程的状态:包括新建、就绪、运行和阻塞四种状态。

3. 进程控制块PCB:用于描述进程的基本信息和运行状态。

4. 进程调度算法:包括先来先服务、最短作业优先、最短剩余时间优先等。

三、存储管理1. 内存分配方式:包括固定分区、可变分区、分页和分段。

2. 内存置换算法:包括先进先出、最近最少使用、最佳置换算法等。

3. 虚拟内存的概念:通过将内存和外存统一管理,为用户提供一个比实际内存大得多的虚拟内存空间。

四、文件管理1. 文件系统的概念:文件系统是操作系统中负责管理和存储文件信息的软件部分。

2. 文件的分类:按性质分为系统文件和用户文件;按内容分为文本文件和二进制文件;按存储方式分为顺序文件和随机文件。

3. 文件的访问方式:包括顺序访问和随机访问。

五、设备管理1. 设备驱动程序的概念:设备驱动程序是操作系统与硬件设备交互的接口,负责设备的初始化和释放、设备的读写操作以及设备的状态查询等。

2. 缓冲技术的概念:缓冲技术是解决I/O设备速度与CPU速度不匹配问题的一种方法,通过在内存中开辟一块缓冲区,暂时存放输入输出数据,以实现数据的同步传输。

3. 设备分配与回收:设备分配的主要任务是确定哪些进程可以使用哪些设备,并满足设备的互斥使用和独立性等约束条件;设备回收的任务是在进程终止时,将设备的使用权收回并重新分配给其他进程使用。

计算机系统导论——读书笔记——第二章信息的表示和处理

计算机系统导论——读书笔记——第二章信息的表示和处理

计算机系统导论——读书笔记——第⼆章信息的表⽰和处理第⼆章信息的表⽰和处理2.1 信息存储2.1.1 ⼗六进制2.1.2 字数据⼤⼩2.1.3 寻址和字节顺序1.地址:对象所使⽤的字节中最⼩的地址2.⼤端法:最⾼有效字节在前⼩端法:最低有效字节在前(⼤多Intel兼容机使⽤)3.发送⽅机器(内部代码)——>⽹络应⽤程序(⽹络标准)——>接收⽅机器(内部代码)4.⼩程序——打印程序对象的字节表⽰1 #include <stdio.h>2using namespace std;34 typedef unsigned char * byte_pointer;//定义类型:指向unsigned char的指针56void show_byte(byte_pointer start, size_t len){7 size_t i;8for(i = 0; i < len; ++i)9 printf(" %.2x", start[i]);//%.2x表⽰整数必须⽤⾄少两个数字的⼗六进制格式输出10 printf("\n");11 }1213void show_int(int x){14 show_byte((byte_pointer) &x, sizeof(int));15 }1617void show_float(float x){18 show_byte((byte_pointer) &x, sizeof(float));19 }2021void show_double(double x){22 show_byte((byte_pointer) &x, sizeof(double));23 }2425void show_pointer(void * x){//void*是特殊类型的指针,没有相关联的类型信息26 show_byte((byte_pointer) &x, sizeof(void *));27 }2829int main(){30int x;31float y;32double z;33while(scanf("%d %f %lf", &x, &y, &z)){34 show_int(x);35 show_float(y);36 show_double(z);37 show_pointer(&x);38 show_pointer(&y);39 show_pointer(&z);40 }41return0;42 }输⼊111-1-1.0-1.0123451.0011.001输出01 00 00 0000 00 80 3f00 00 00 00 00 00 f0 3f98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 00ff ff ff ff00 00 80 bf00 00 00 00 00 00 f0 bf98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 0039 30 00 00c5 20 80 3f6a bc 74 93 18 04 f0 3f98 f5 bf ef fe 7f 00 0094 f5 bf ef fe 7f 00 0088 f5 bf ef fe 7f 00 00我的电脑是MaxOS,可以看出它是64位系统,采⽤⼩端法表⽰5.可以通过在终端(mac是terminal,windows是命令⾏⼯具)执⾏命令man ascii得到⼀张ASCII字符码表,回车后运⾏结果如下ASCII(7) BSD Miscellaneous Information Manual ASCII(7)NAMEascii -- octal, hexadecimal and decimal ASCII character setsDESCRIPTIONThe octal set:000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel010 bs 011 ht 012 nl 013 vt 014 np 015 cr 016 so 017 si020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us040 sp 041 ! 042 " 043 # 044 $ 045 % 046 & 047 '050 ( 051 ) 052 * 053 + 054 , 055 - 056 . 057 /060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077 ?100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W130 X 131 Y 132 Z 133 [ 134 \ 135 ] 136 ^ 137 _140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w170 x 171 y 172 z 173 { 174 | 175 } 176 ~ 177 delThe hexadecimal set:00 nul 01 soh 02 stx 03 etx 04 eot 05 enq 06 ack 07 bel08 bs 09 ht 0a nl 0b vt 0c np 0d cr 0e so 0f si10 dle 11 dc1 12 dc2 13 dc3 14 dc4 15 nak 16 syn 17 etb18 can 19 em 1a sub 1b esc 1c fs 1d gs 1e rs 1f us20 sp 21 ! 22 " 23 # 24 $ 25 % 26 & 27 '28 ( 29 ) 2a * 2b + 2c , 2d - 2e . 2f /30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 738 8 39 9 3a : 3b ; 3c < 3d = 3e > 3f ?40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G48 H 49 I 4a J 4b K 4c L 4d M 4e N 4f O50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W58 X 59 Y 5a Z 5b [ 5c \ 5d ] 5e ^ 5f _60 ` 61 a 62 b 63 c 64 d 65 e 66 f 67 g68 h 69 i 6a j 6b k 6c l 6d m 6e n 6f o70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w78 x 79 y 7a z 7b { 7c | 7d } 7e ~ 7f delThe decimal set:0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 756 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 delFILES/usr/share/misc/asciiHISTORYAn ascii manual page appeared in Version 7 AT&T UNIX.BSD June 5, 1993 BSD(END)2.1.4 表⽰字符串1.⼗进制数字‘y’的ascii码正好是0x3y2.strlen(str)函数不计算终⽌的空字符(ascii码为0x00)3.字符编码⽅式:(1)ASCII (American Standard Code for Information interchange)(2)Unicode (Unique Code)(3)UTF-8 / UTF-16 / UFT-32 (Unicode Transformation Format)2.1.5 表⽰代码2.1.6 布尔代数(Boolean Algebra)简介1.布尔运算&对|有分配律:a&(b|c) = (a&b)|(a&c)布尔运算|对&有分配律:a|(b&c) = (a|b)&(a|c)2.位向量:长度为w,由0和1组成的串应⽤:表⽰有限集合/压位运算(例:[01101010]表⽰集合{1,3,5,6}),位向量掩码/屏蔽信号3.布尔环(Boolean ring),类似于整环/整数环“加法”逆元:^类似于+; 每个整数x有加法逆元-x使得x+(-x)=0,类似地,每个布尔元素a都有“加法逆元”a使得a^a=0; 有趣的性质:(a^b)^a=b 1//这是⼀个不需要第三个量的交换函数,不过它并没有性能上的优势2void inplace_swap(int *x, int *y){//*x = a, *y = b3 *x = *x ^ *y;//*x = a^b, *y = b4 *y = *x ^ *y;//*x = a^b, *y = a5 *x = *x ^ *y;//*x = b, *y = a6 }2.1.7 C语⾔中的位级运算:&, |, ^, ~2.1.8 C语⾔中的逻辑运算: &&, ||, !2.1.9 C语⾔中的移位运算:>>, <<1.逻辑右移(⾼位补0,⽆符号数进⾏逻辑右移)算数右移(⾼位补符号位,有符号数进⾏算数右移)(1)初级运算符[]().->(2)单⽬运算符(3)算数运算符(4)移位运算符(5)关系运算符(6)位级运算符(7)逻辑运算符(8)赋值运算符2.2 整数表⽰2.2.1 整形数据类型2.2.2 ⽆符号数的编码(unsigned)2.2.3 补码编码(two's-complement)1.<limits.h>库:INT_MIN, INT_MAX, UINT_MAX<stdint.h>库:intN_t, UintN_t (t = 16,32,64等)(我在xcode上没有include这两个库也能直接使⽤INT_MIN、int32_t等)2.有符号数的表⽰⽅法(1)补码(two's-complement):最⾼位权重为-2^(w-1)(2)反码(ones' complement):最⾼位权重为-(2^(w-1)-1)(3)原码(sign-magnitude):最⾼位为1表⽰所有其他位权重为负注:(2)(3)中0的表⽰法不唯⼀,有+0和-0两种2.2.4 有符号数和⽆符号数之间的转换(可能)改变数值,但不改变位表⽰1.补码转换为⽆符号数(w位):TMin <= x < 0, T2U(x) = x + 2^w0 <= x <= TMax, T2U(x) = x2.⽆符号数转换为有符号数(w位):0 <= x <= TMax, U2T(x) = xTMax < x <= UMax, U2T(x) = x - 2^w2.2.5 C语⾔中的有符号数和⽆符号数1.数字常量默认为有符号数,加上后缀u或U可创建⽆符号数常量2.类型转换的⽅式:(1)显式:强制类型转换(2)隐式:不同类型变量间赋值3.%d有符号⼗进制,%u⽆符号⼗进制,%o⼋进制,%x⼗六进制4.C语⾔对于同时包含有符号数和⽆符号数的表达式,会隐式地将有符号数转换为⾮负的⽆符号数 1/*2这是⼀个测试函数3注:TMin写成-2147483647-1⽽⾮-21474836484是因为limits.h中定义INT_MIN=-INT_MAX-1,以规避某些奇怪的现象5*/6 #include <cstdio>7using namespace std;89int main(){10 printf("-1 < 0u = %d\n", -1 < 0u);11 printf(" -1 = 0x%x \n", -1);12 printf(" 0u = 0x%x\n\n", 0u);1314 printf("2147483547 > (int)2147483648u = %d\n", 2147483547 > (int)2147483648u);15 printf(" 2147483547 = 0x%x \n", 2147483547);16 printf(" (int)2147483648u = 0x%x\n\n", (int)2147483648u);1718 printf("-2147483647-1u < 2147483647 = %d\n", -2147483647-1u < 2147483647);19 printf(" -2147483647-1u = 0x%x \n", -2147483647-1u);20 printf(" 2147483647 = 0x%x\n\n", 2147483647);2122 printf("-2147483647-1u < -2147483647 = %d\n", -2147483647-1u < -2147483647);23 printf(" -2147483647-1u = 0x%x \n", -2147483647-1u);24 printf(" -2147483647 = 0x%x\n\n", -2147483647);25return0;26 }运⾏结果如下-1 < 0u = 0-1 = 0xffffffff0u = 0x02147483547 > (int)2147483648u = 12147483547 = 0x7fffff9b(int)2147483648u = 0x80000000-2147483647-1u < 2147483647 = 0-2147483647-1u = 0x800000002147483647 = 0x7fffffff-2147483647-1u < -2147483647 = 1-2147483647-1u = 0x80000000-2147483647 = 0x800000012.4 浮点数2.4.1 ⼆进制⼩数2.4.2 IEEE浮点表⽰1.表⽰形式:(1)符号(sign)s: 表⽰+-(2)尾数(significand)M:⼆进制⼩数,取值范围为[1,2)或[0,1)(3)阶码(exponent)E:对浮点数加权,权重为2的E次幂2.编码:s编码符号sign s,exp编码阶码exponent E,frac编码尾数significand M3.三种情况(1)规格化的(noemalized): exp!=00...0 && exp!=11 (1)i. 阶码 E = exp - bias, bias = 2^(k-1)-1, k=exp的位数ii. 尾数 M = 1.xx...x = 1.frac的位(隐含的以1开头的表⽰)(2)⾮规格化的(denormalized): exp == 00 0i. 阶码 E = 1 - bias, bias = 2^(k-1)-1, k=exp的位数ii. 尾数 M = 0.xx...x = 0.frac的位iii.注意:0.0有两种表⽰⽅法+0.0和-0.0,符号位分别为0或1,其他位全部为0(3)特殊值: exp == 11 (1)i. ⽆穷:frac = 00...0, s=0或1表⽰+∞或-∞,能够表⽰溢出的运算结果,如x/0 ii. Nan(not a number): frac != 00...0, 表⽰⾮实数的运算结果,如根号-1,∞-∞4.三种情况的数字分布⾮规格化数字的阶码定义为E=1-bias可以补偿⾮规格化的尾数没有隐含的开头1,有助于数字表⽰的平滑转变;否则,在绝对值最⼤的⾮规格化数字(其⼆进制表⽰为0 00...0 11...1)和绝对值最⼩的规格化数字(其⼆进制表⽰为0 00...01 00...0)之间将存在跳跃2.4.3 数字⽰例1. 处理正浮点数时,若按照⽆符号整数解释他们的⼆进制表⽰,则可以发现它们的⼤⼩顺序不变;负浮点数只需要倒序。

unix环境高级编程读书笔记

unix环境高级编程读书笔记

Unix环境高级编程读书笔记Unix环境高级编程是一本经典的计算机编程指南,它深入探讨了Unix 操作系统的各个方面,并提供了大量有关高级编程和系统级编程的知识。

在本文中,我将根据这本书的内容,为您撰写一份读书笔记,希望能够帮助您更深入地理解Unix环境的高级编程。

1. Unix环境概述Unix操作系统诞生于20世纪70年代初,在经过几十年的发展之后,成为了当今世界上最流行的操作系统之一。

Unix系统以其稳定性、可靠性和安全性而闻名,被广泛应用于服务器、工作站和嵌入式系统中。

Unix环境高级编程这本书就是帮助读者深入理解Unix操作系统的各个方面,包括文件I/O、进程控制、信号处理、线程和内存管理等内容。

2. 文件I/O文件I/O是Unix编程中的基础,Unix环境高级编程中详细介绍了文件描述符、标准I/O库、文件和目录操作等内容。

这些知识对于理解Unix系统中的文件系统操作非常重要,可以帮助开发人员更好地处理文件和目录,提高程序的效率和稳定性。

3. 进程控制Unix系统以进程为核心,Unix环境高级编程深入探讨了进程的创建、终止、信号处理、进程间通信等内容。

理解这些内容可以帮助开发人员编写更加健壮和高效的多进程程序,提高系统的并发能力和响应速度。

4. 线程和同步Unix环境高级编程还介绍了线程的创建、同步、互斥和条件变量等内容。

线程编程是Unix系统中的重要部分,了解这些知识可以帮助开发人员编写更加高效和安全的多线程程序,提高系统的并发能力和性能表现。

5. 内存管理Unix系统的内存管理也是非常复杂的,Unix环境高级编程对内存分配、共享内存、内存映射等内容进行了深入讲解。

理解这些知识可以帮助开发人员更好地管理系统内存,避免内存泄漏和内存碎片问题,提高系统的稳定性和性能。

总结回顾通过阅读Unix环境高级编程这本书,我对Unix系统的各个方面有了更深入的了解。

文件I/O、进程控制、线程和内存管理等内容让我受益匪浅,我相信这些知识对我的编程能力会有很大的提高。

《深入理解计算机系统》读书笔记

《深入理解计算机系统》读书笔记

《深⼊理解计算机系统》读书笔记并发、并⾏和抽象并发concurrency是⼀个通⽤的概念:指同时具有多个活动的系统。

并⾏parallelism:指⽤并发使⼀个系统运⾏得更快。

并⾏可以在计算机系统的多个抽象层次上运⽤。

1. 线程级并发构建进程这个抽象,我们能够设计出同时执⾏多个程序的系统,这就导致了并发。

使⽤线程,我们能够在⼀个进程中执⾏多个控制流。

单处理器系统中,并发执⾏只是模拟出来的,是通过使⼀台计算机在他正在执⾏的进程间快速切换的⽅式实现的。

当构建⼀个由单操作系统内核控制的多处理器组成的系统时,就得到⼀个多处理器系统。

多处理器是将多个cpu集成到⼀个集成电路芯⽚上。

超线程(同时多线程)处理器是⼀项允许⼀个cpu执⾏多个控制流的技术。

如常规的处理器需要⼤约20000个时钟周期做不同的线程切换,⽽超线程处理器可以在单个周期的基础上进⾏切换。

这使得cpu可以更好的利⽤其处理资源。

多处理器的使⽤可以从两个⽅⾯提⾼系统性能。

⾸先,它减少了在执⾏多个任务时模拟并发的需要。

其次,它可以使应⽤程序运⾏的更快。

当然,这必须要求程序是以多线程⽅式来书写的,这些线程可以并⾏地⾼效执⾏。

2. 指令级并⾏在较低的抽象层次上,现代处理器可以同时执⾏多条指令的属性指令级并⾏。

基本思想是将⼀条指令所需要的活动划分为不同的步骤,将处理器的硬件组织成⼀系列的阶段,每个阶段执⾏⼀个步骤。

这些阶段可以并⾏的操作,⽤来处理不同的指令的不同部分。

其通过硬件设计,能够达到接近于⼀个时钟周期⼀条的指令的执⾏速率。

甚⾄更快,称为超标量处理器。

3. 单指令、多数据并⾏在最低的层次上,许多现代处理器拥有特殊的硬件,允许⼀条指令产⽣多个并⾏执⾏的操作,这种⽅式称为单指令、多数据SIMD并⾏。

如专门处理向量计算的处理器。

抽象。

抽象是计算机科学中最为重要的概念之⼀。

如⼀组函数的API等,类的封装,接⼝。

在处理器中,指令集结构提供了对实际处理器硬件的抽象。

计算机操作系统重点知识点整理

计算机操作系统重点知识点整理

计算机操作系统重点知识点整理1. 操作系统介绍操作系统是计算机系统的核心组成部分,负责管理和控制计算机硬件及软件资源,提供良好的用户界面和服务。

操作系统是计算机科学中的重要分支,研究和理解操作系统的基本知识点对于计算机专业人员至关重要。

2. 进程与线程进程是指在计算机中正在运行的程序的实例,它拥有独立的内存空间和系统资源。

线程是进程中的一个执行单元,多线程可以提高程序的执行效率和并发性。

重点知识点包括进程与线程的区别和联系、线程同步与互斥、进程调度算法等。

3. 内存管理内存管理是操作系统中重要的部分,包括内存分配、内存回收、虚拟内存等。

其中,虚拟内存可以扩展主存容量,使得计算机可以同时运行更多的程序。

重点知识点包括内存分页、段式内存管理、页面置换算法等。

4. 文件系统文件系统是操作系统中负责管理和控制文件的组织结构和存储空间的部分,提供对文件的读写和管理功能。

重点知识点包括文件目录结构、文件存储方式、文件权限管理等。

5. 输入输出设备管理输入输出设备管理是操作系统中与外部设备交互的部分,包括对输入设备和输出设备的控制和管理。

重点知识点包括缓冲区管理、设备驱动程序、中断处理等。

6. 文件系统与磁盘管理文件系统与磁盘管理是操作系统中重要的部分,涉及到磁盘的组织和管理、文件的存取与保护等。

重点知识点包括磁盘分区、磁盘调度算法、磁盘块分配算法等。

7. 进程通信与同步进程通信与同步是操作系统中重要的内容,用于实现多个进程之间的信息交换和协作。

重点知识点包括进程间通信的方式、进程的同步与互斥机制、死锁问题等。

8. 网络操作系统网络操作系统是运行在网络环境中的操作系统,可以管理和控制分布在不同节点上的计算机资源。

重点知识点包括分布式系统的架构、网络拓扑结构、网络安全等。

9. 安全与保护安全与保护是操作系统中非常重要的内容,涉及到系统资源的权限管理、数据的保护与加密、防止未授权访问等。

重点知识点包括访问控制模型、身份验证、防火墙等。

《计算机操作系统》MOOC笔记1-计算机系统概论

《计算机操作系统》MOOC笔记1-计算机系统概论

《计算机操作系统》MOOC笔记1-计算机系统概论南京⼤学的骆斌⽼师主讲的,考研可能会⽤得上计算机系统的组成计算机系统:包括硬件⼦系统和软件⼦系统硬件:借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统⼯作的实体CPU,主存储器,I/O控制系统,外围设备软件:各种程序和⽂件,⽤于指挥计算机系统按指定的要求进⾏协同⼯作包括系统软件、⽀撑软件和应⽤软件关键系统软件是:操作系统与语⾔处理程序计算机系统的⽤户视图计算机硬件系统组成中央处理器运算单元控制单元 :解译机器指令主存储器外围设备输⼊设备输出设备存储设备⽹络通信设备总线存储程序计算机体系结构存储器是这个模型的核⼼以运算单元为中⼼,控制流由指令流产⽣采⽤存储程序原理,⾯向主存组织数据流主存是按地址访问、线性编址的空间指令由操作码和地址码组成数据以⼆进制编码总线总线(Bus)是计算机各种功能部件之间传送信息的公共通信⼲线,它是CPU、内存、输⼊输出设备传递信息的公⽤通道计算机的各个部件通过总线相连接,外围设备通过相应的接⼝电路再与总线相连接,从⽽形成了计算机硬件系统按照所传输的信息种类,总线包括⼀组控制线、⼀组数据线和⼀组地址线内部总线:⽤于CPU芯⽚内部连接各元件系统总线:⽤于连接CPU、存储器和各种 I/O模块等主要部件通信总线:⽤于计算机系统之间通信(⽹络)为了加快通信效率,系统总线也是分级的,PCI连接块设备(较快),E(ISA)总线连接字符设备(较慢)。

中央处理器(CPU)中央处理器是计算机的运算核⼼(Core)和控制单元( Control Unit),主要包括:运算逻辑部件:⼀个或多个协运算器寄存器部件:包括通⽤寄存器、控制与状态寄存器,以及⾼速缓冲存储器(Cache)控制部件:实现各部件间联系的数据、控制及状态的内部总线;负责对指令译码、发出为完成每条指令所要执⾏操作的控制信号、实现数据传输等功能的部件存储器L0 L1 L2 L3 L4都是挥发性存储,加电存储,断电失效外围设备设备类型输⼊设备输出设备存储设备机机通信设备(本质上属于输⼊输出设备,但是不同⽹络设备块⼤⼩不⼀致(包,块,字))设备控制⽅式轮询⽅式:CPU忙式控制+数据交换中断⽅式:CPU启动外围设备/中断+数据交换DMA⽅式:CPU启动/中断,DMA独⽴进⾏数据交换软件系统组成系统软件:操作系统、实⽤程序、语⾔处理程序、数据库管理系统操作系统实施对各种软硬件资源的管理控制实⽤程序为⽅便⽤户所设,如⽂本编辑等语⾔处理程序把⽤汇编语⾔/⾼级语⾔编写的程序,翻译成可执⾏的机器语⾔程序⽀撑软件有接⼝软件、⼯具软件、环境数据库,⽀持⽤户使⽤计算机的环境,提供开发⼯具应⽤软件是⽤户按其需要⾃⾏编写的专⽤程序软件开发的不同层次计算机硬件系统:机器语⾔-操作系统之资源管理:机器语⾔+⼴义指令(扩充了硬件资源管理)操作系统之⽂件系统:机器语⾔+系统调⽤(扩充了信息资源管理)数据库管理系统:+数据库语⾔(扩充了功能更强的信息资源管理)语⾔处理程序:⾯向问题的语⾔计算机程序的执⾏过程操作系统的概念OS是计算机系统最基础的系统软件,管理软硬件资源、控制程序执⾏,改善⼈机界⾯,合理组织计算机⼯作流程,为⽤户使⽤计算机提供良好运⾏环境从⽤户⾓度看,OS管理计算机系统的各种资源,扩充硬件的功能,控制程序的执⾏从⼈机交互看,OS是⽤户与机器的接⼝,提供良好的⼈机界⾯,⽅便⽤户使⽤计算机,在整个计算机系统中具有承上启下的地位从系统结构看,OS是⼀个⼤型软件系统,其功能复杂,体系庞⼤,采⽤层次式、模块化的程序结构操作系统组成进程调度⼦系统进程通信⼦系统内存管理⼦系统设备管理⼦系统⽂件管理⼦系统⽹络通信⼦系统作业控制⼦系统从操作控制⽅式分类多道批处理操作系统,脱机控制⽅式分时操作系统,交互式控制⽅式实时操作系统从应⽤领域分类服务器操作系统、并⾏操作系统⽹络操作系统、分布式操作系统个⼈机操作系统、⼿机操作系统嵌⼊式操作系统、传感器操作系统计算机的资源-硬件资源处理器、内存、外设信息资源数据、程序资源的共享与分配⽅式资源共享⽅式独占使⽤⽅式并发使⽤⽅式资源分配策略静态分配⽅式动态分配⽅式资源抢占⽅式多道程序同时计算CPU速度与I/O速度不匹配的⽭盾,⾮常突出只有让多道程序同时进⼊内存争抢CPU运⾏,才可以够使得CPU和外围设备充分并⾏,从⽽提⾼计算机系统的使⽤效率多道程序设计的特点CPU与外部设备充分并⾏外部设备之间充分并⾏发挥CPU的使⽤效率提⾼单位时间的算题量多道程序的实现为进⼊内存执⾏的程序建⽴管理实体:进程如何使⽤资源:调⽤操作系统提供的服务例程(如何陷⼊操作系统)如何复⽤CPU:调度程序(在CPU空闲时让其他程序运⾏)如何使CPU与I/O设备充分并⾏:设备控制器与通道(专⽤的I/O处理器)如何让正在运⾏的程序让出CPU:中断(中断正在执⾏的程序,引⼊OS处理)计算机的操作⽅式OS规定了合理操作计算机的⼯作流程OS的操作接⼝——系统程序 OS提供给⽤户的功能级接⼝,为⽤户提供的解决操作计算机和计算共性问题的所有服务的集合OS的两类作业级接⼝脱机作业控制⽅式:作业控制语⾔联机作业控制⽅式:操作控制命令脱机作业的控制⽅式OS:提供作业说明语⾔⽤户:编写作业说明书,确定作业加⼯控制步骤,并与程序数据⼀并提交操作员:通过控制台输⼊作业OS:通过作业控制程序⾃动控制作业的执⾏例:批处理OS的作业控制⽅式,UNIX的shell程序, DOS的bat⽂件联机作业控制⽅式计算机:提供终端(键盘/显⽰器)⽤户:登录系统OS:提供命令解释程序⽤户:联机输⼊命令,直接控制作业步的执⾏例:分时OS的交互控制⽅式命令解释程序命令解释程序:接受和执⾏⼀条⽤户提出的对作业的加⼯处理命令当⼀个新的批作业被启动,或新的交互型⽤户登录进系统时,系统就⾃动地执⾏命令解释程序,负责读⼊控制卡或命令⾏,作出相应解释,并予以执⾏会话语⾔:可编程的命令解释程序(shell)图形化的命令控制⽅式多通道交互的命令控制⽅式命令解释程序的处理过程OS启动命令解释程序,输出命令提⽰符,等待键盘中断/⿏标点击/多通道识别每当⽤户输⼊⼀条命令(暂存在命令缓冲区)并按回车换⾏时,申请中断CPU响应后,将控制权交给命令解释程序,接着读⼊命令缓冲区内容,分析命令、接受参数,执⾏处理代码前台命令执⾏结束后,再次输出命令提⽰符,等待下⼀条命令后台命令处理启动后,即可接收下条命令操作系统的程序接⼝操作系统的程序接⼝——系统调⽤操作系统实现的完成某种特定功能的过程;为所有运⾏程序提供访问操作系统的接⼝系统调⽤的实现机制陷⼊处理机制:计算机系统中控制和实现系统调⽤的机制陷⼊指令:也称访管指令,或异常中断指令,计算机系统为实现系统调⽤⽽引起处理器中断的指令每个系统调⽤都事先规定了编号,并在约定寄存器中规定了传递给内部处理程序的参数系统调⽤实现:编写系统调⽤处理程序设计⼀张系统调⽤⼊⼝地址表,每个⼊⼝地址指向⼀个系统调⽤的处理程序,并包含系统调⽤⾃带参数的个数陷⼊处理机制需开辟现场保护区,以保存发⽣系统调⽤时的处理器现场操作系统的系统结构-OS构件内核、进程、线程、管程等设计概念模块化、层次式、虚拟化内核设计是OS设计中最为复杂的部分操作系统内核单内核:内核中各部件杂然混居的形态,始于1960年代,⼴泛使⽤;如Unix/Linux,及 Windows(⾃称采⽤混合内核的CS结构)微内核:1980年代始,强调结构性部件与功能性部件的分离,⼤部分OS研究都集中在此混合内核:微内核和单内核的折中,较多组件在核⼼态中运⾏,以获得更快的执⾏速度外内核:尽可能减少内核的软件抽象化和传统微内核的消息传递机制,使得开发者专注于硬件的抽象化;部分嵌⼊式系统使⽤层次结构操作系统的规模在计算机软件发展史上,OS是第⼀个⼤规模的软件系统1960年代,由OS开发所衍⽣的体系结构、模块化开发、测试与验证、演化与维护等研究,直接催⽣了软件⼯程这⼀新兴研究领域(另⼀个催⽣来源是 DB应⽤引发的需求与规格)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线程是一个进程内的实体,也是Windows执行此进程时的调度实体。如果没有线程,进程的程序是不可能运行的。
一个线程包括以下内容:
一组代表处理器状态的CPU寄存器中的内存
两个栈,一个用于当前线程在内核模式下执行的时候,一个用户线程在用户模式下执行的时候。
一个被称为线程局部存储区(TLS)的私有存储区域,各个子系统、运行库和DLL都会用到该存储区域。
本地安全认证服务器(Lsass.exe)。
System进程是一个特殊线程的母体,这种特殊线程只能在内核模式下运行,称为内核模式系统线程。系统线程具备普通用户模式线程的所有属性和环境,但是不同的地方在于,他们只在内核模式下运行系统空间中加载的代码,无论这些代码是在Ntoskrnl.exe中,还是在任何其他加载进来的设备驱动程序。
总线型驱动程序。它为总线控制器、适配器、桥或者任何带有子设备的设备提供服务。总线驱动程序是必需的驱动程序,通常Microsoft会提供此类驱动程序。
功能型驱动程序。它是主要的设备驱动程序,为相应的设备提供了可操作的接口,功能型驱动也是必需的,它最了解某一特定的设备,而且它往往是唯一能访问与该设备相关的寄存器的驱动程序。
在Windows操作系统中,对象指某一个静态定义的对象类型的单个运行时的实例,对象类型包含了一个系统定义的数据类型、在该数据类型的实例上进行操作的一些函数,以及一组对象属性,在Windows中,任何一个进程都是进程对象类型的一个实例。
对象属性是对象中的数据域,每个对象属性定义了对象的一部分状态。
对象和普通数据结构之间最根本的区别:对象的内部结构是被隐藏的,必须调用一个对象服务才能获得对象内部的数据,或者把数据置到对象内部,这样很好的将对象的底层实现和哪些仅仅使用该对象的代码隔离开。
过滤型驱动程序。它用来为某一设备增加新的功能,或者修改来自其他设备的I/O请求或应答,过滤型驱动程序是可选的,可以有任意数目。
在WDM驱动环境中,对于一个设备来说,并不是由单个驱动程序来控制它的所有方面:一个总线型驱动程序负责向PnP管理器报告其总线上的设备,而一个功能型驱动程序操纵该设备。
在大多数情况下,低层次的过滤型驱动程序改变设备硬件的行为,上层的过滤型驱动程序为一个设备提供一些增值特性。
一个Windows进程由以下几个元素构成:
一个私有的虚拟地址空间
一个可执行的程序
一个已打开句柄的列表,这些句柄指向各种系统资源
一个被称为访问令牌的安全环境,它标识了与该进程相关的用户、安全组和特权。
一个被称为进程ID的唯一标识符
至少一个执行线程
每个进程也指向它的父进程或者创建者进程,但是,如果父进程推出的话,子进程中的父进程信息并不会被更新,因此,一个进程有可能指向一个已经不存在的父进程。
服务一般有三个名称:你在系统中看到的正在运行的进程名、注册表中的内部名称和在Services管理工具中给出的显示名。
一个进程内的所有线程可以读或者写另一个线程的内存,然而,一个进程中的线程是不可能直接引用另一个进程的地址空间的。
虚拟地址描述符(VAD,virtual address descriptor)是指一些数据结构,内存管理区利用这些数据结构来记录一个进程所使用的虚拟地址。
Windows实现了一个基于线性地址空间的虚拟内存系统,每个进程感觉自己独立拥有一个很大的私有地址空间。虚拟内存提供了一个内存逻辑视图,它可能并不对应于内存的物理布局。在运行的时候,内存管理器借助于硬件的支持,将虚拟地址翻译或者映射成真正存放数据的物理地址。操作系统通过控制这一层保护或者映射机制,可以保证一个进程不会闯入另一个进程中,也不会改写操作系统的数据。
为了避免用户应用程序访问或者修改关键的操作系统数据,Windows使用了两种处理器访问模式:用户模式和内核模式。用户程序代码运行在用户模式下,而操作系统代码运行在内核模式下。内核模式允许访问所有的系统内存和所有的CPU指令,处理器让操作系统软件比应用软件有更高的特权级,从而为操作系统设计者提供了一层保护的基础,确保一个行为不正常的应用程序不会破坏系统整体的稳定性。
设备驱动程序可以分为以下几类:
硬件设备驱动程序。
文件系统驱动程序。
文件系统过滤器驱动程序。
网络重定向和服务器。
协议驱动程序。
内核流式过滤器驱动程序。
要想在系统中添加用户编写的内核模式代码,安装驱动程序是唯一的方法,所以有些程序员把编写设备驱动程序当做是一种访问操作系统内部函数和数据结构的渐变方法。
目前,新的驱动程序模型是WDM(Windows Driver Model),从WDM的角度来看,驱动程序可以分为以下三种:
以下的系统进程会出现在每一个Windows系统中:
空闲进程(Idle)。
会话管理器(Smss.exe)。
Windows子系统(Csrss.exe)。
登陆进程(ቤተ መጻሕፍቲ ባይዱinlogon.exe)。
服务控制管理器(Services.exe)和它创建的子服务进程(例如系统提供的通用服务宿主进程Svchost.exe)。
Intel x86处理器的体系结构定义了四种特权级,Windows使用特权级0(或者0环)作为内核模式,特权级3(或者3环)作为用户模式。
虚拟内存中的每一个页面都被标记了处理器必须在什么访问模式下才可以读和/或写该页面,系统空间中的页面只能在内核模式下才可以访问,而用户地址空间中的所有页面在用户模式下都是可以访问的,只读页面在任何模式下都是不可写的。
设备驱动程序是可加载的内核模式模块,它们在I/O管理器和相应的硬件之间建立起链接。
设备驱动程序运行在内核模式下,位于以下三种执行环境之一:
在发起I/O功能的用户线程的环境中。
在内核模式的系统线程的环境中。
作为一个中断的结果。
Windows中的设备驱动程序并不直接维护硬件,而是调用HAL中函数与硬件进行交互。
特权访问控制。即使无法联系到对象的所有者,某些人也可以访问被保护的对象。
Windows操作系统区别与其他大多数操作系统的特点之一是它的大多数内部文本串是以16为宽度的Unicode字符来存储和处理的。接受字符串参数的Windows函数一般都有两个入口点:一个Unicode和一个ANSI。如果你调用一个Windows的窄字符版本,则输入的字符串参数在被系统处理之前,先转成Unicode,而输出的参数则在被返回给应用程序之前,从Unicode转成ANSI字符串。
Windows API:Windows应用编程接口是针对Microsoft Windows操作系统家族的系统编程接口,每个操作系统实现了Windows API不同的子集。
Windows API可以分成以下几个大类:
基本服务
组件服务
用户界面服务
图形和多媒体服务
消息和协作
网络
Web服务
程序和进程的关系:程序是指一个静态的指令序列,而进程则是一个容器,其中包括了当执行一个程序的特定实例时所使用的各种资源。
Windows NT系列和Windows 95系列的区别:
Windows NT支持多处理器,Windows 95不支持。
Windows NT文件系统支持安全性(例如自主访问控制),Windows 95不支持。
Windows NT是完全32位,而Windows 95从Windows 3.1和MS-DOS继承了大量的16位代码。
从用户模式到内核模式的转换本身并不会影响线程的调度——模式转换并不是环境切换。因此对于一个用户线程来说,它的一部分时间在用户模式下执行,令部分时间在内核模式下运行,这是很正常的。
终端服务是指Windows为了在单个系统中支持多个可交互的用户会话而提供的能力。利用Windows终端服务,一个远程用户可以在另一个机器上建立一个会话,并且登陆进去,在该服务器上运行应用程序,服务器把图形界面传送到客户机,客户机把用户的输入传回到服务器上。
Winlogon不仅当用户登录和注销时是活动的,而且无论合适,当它截取到键盘上的SAS(Ctrl + Alt + Del)时也是活动的。
Windows中的“服务”既可以指一个服务器进程,也可以指一个设备驱动程序。
服务控制管理器是一个特殊的系统进程,它运行的影响文件是\Windows\System32\Services.exe,它负责启动、停止服务进程,也负责与这些服务进程进行交互,所谓服务程序,实际上只是调用了一些特殊Windows函数的Windows映像。
操作系统读书报告
课题:<<解析Windows操作系统>>读书笔记
院系:_______
班级:____
姓名:___________________
学号:_______________
指导老师:___________________
2011年10月18日
<<解析Windows操作系统>>读书笔记
这段时间读了<<解析windows操作系统>>这本书。学到了很多知识。总结了如下笔记。
一个被称为线程ID的唯一标识符
有时线程也有他们自己的安全环境,如果多线程服务器应用程要模拟其客户的安全环境,则往往可以利用线程的安全环境。
寄存器、栈和私有的存储区域合在一起被称为线程的环境
纤程与线程:纤程使得一个应用程序可以调度它自己的“线程”的执行过程,而不必依赖于Windows内置的基于优先级的调度机制。纤程常常被称为轻量级的线程。从调度的角度来看,它们对于内核是不可见的,因为它们是在用户模式下实现的。
Windows NT进程共享的内存只对哪些影射了这一共享内存的进程才是可见的,在Windows 95上,所有的共享内存都是可见的,而且在任何一个进程内都可以写这些内存,因此任何一个进程都可以改写或者破坏其他协作进程所使用的共享内存。
在Windows 95中,有一些关键的操作系统页面在用户模式下是可写的,从而允许一个用户程序破坏系统,或者使系统崩溃。
相关文档
最新文档