随笔分类 -  计算机操作系统

摘要:用信号量同步线程:同步错误:一般而言你没有办法预测操作系统是否将你的线程选择一个正确的顺序执行。12.5.1 进度图(1)进度图:将n个并发线程的执行模型化为一条n维笛卡尔空间中的轨迹线。(2)每条轴k对应着线程k的进度。(3)每个点Ik代表着k线程已完成指令Ik这一个状态,原点处代表初始状态。(4... 阅读全文
posted @ 2015-09-10 23:52 弱水三千12138 编辑
摘要:多线程程序中的共享变量:一个线程是共享的当且仅当多个线程引用这个变量的某个实例。12.4.1 线程存储器模型(1)寄存器是不共享的,而虚拟存储器总是共享的(2)线程的栈保存在虚拟地址空间的栈区域,并且通常被相应的线程独立的访问。(3)但线程栈是不对其他线程设防的。如果一个线程以某种方式得到其他线程栈... 阅读全文
posted @ 2015-09-09 15:42 弱水三千12138 编辑
摘要:多进程:每个流单独的进程。私有的地址空间,共享数据困难。IO多路复用:所有流在一个进程上,共享地址空间,利用IO多路复用技术来调用逻辑流。线程:(1)线程就是运行在进程的上下文中的逻辑流,线程由内核自动调度。(2)线程都有自己的线程上下文,包括线程ID,线程栈,栈指针,程序计数器,通用目的寄存器,条... 阅读全文
posted @ 2015-09-08 16:54 弱水三千12138 编辑
摘要:三种并行的应用程序:1. 基于进程的并发编程:2. 基于IO多路复用的并发:3. 基于线程的并发编程:12.1 基于进程的并发编程进程的优劣:(1)进程间共享文件表,但不共享用户地址空间,拥有独立的地址空间,这样一个进程不会不小心将另一个进程的虚拟存储器给覆盖了。(2)独立的地址空间使得进程间通信很... 阅读全文
posted @ 2015-09-08 15:34 弱水三千12138 编辑
摘要:套接字接口:套接字接口是一组函数,它们和Unix IO结合起来,用以创建网络应用。14.4.1 套接字的地址结构(1)从unix内核来看,一个套接字就是通信的一个端点。(2)从unix应用程序来看,一个套接字就是一个有相应描述符的打开文件。英特网的套接字地址结构如下:11.4.2 socket函数(... 阅读全文
posted @ 2015-09-02 10:13 弱水三千12138 编辑
摘要:全球IP英特网(1)每台英特网主机都运行实现TCPIP协议的软件。(2)英特网的客户端和服务器混合使用套接字接口函数和Unix IO函数来进行通信。(3)套接字函数典型的是作为陷入内核的系统调用来实现的,并调用各种内核模式的TCPIP函数。(1)主机集合被映射成为一个32位的IP地址。(2)这组IP... 阅读全文
posted @ 2015-09-01 21:55 弱水三千12138 编辑
摘要:网络编程:11.1 客户端-服务器编程模型(1)一个应用是由一个服务器进程和一个或多个客户端进程组成。(2)服务器管理某种资源,并且操纵这种资源来为客户端服务。CS模型:CS的基本操作是事务;11.2 网络对于主机而言,网络只是一种IO设备,作为数据源和数据接收方。局域网(LAN):(1)从物理层次... 阅读全文
posted @ 2015-09-01 19:05 弱水三千12138 编辑
摘要:系统级IO:输入输出是主存与外部设备(磁盘,终端,网络)之间拷贝数据的过程输入:从IO设备拷贝数据到主存中输出:从主存中拷贝数据到IO设备中10.1 unix IO所有的IO设备都被模型化为文件,而所有的输入输出都被当做对相应的文件的读和写来执行。打开文件:(1)应用程序通过要求内核来打开相应的文件... 阅读全文
posted @ 2015-09-01 16:53 弱水三千12138 编辑
摘要:9.3 虚拟存储器作为缓存工具 (1)虚拟存储器被组织为一个由存放在磁盘上的N个连续字节大小的单元组成的数组。 (2)每个字节都有一个唯一的虚拟地址,作为数组索引 (3)磁盘上的内容被缓存到主存中 (4)磁盘上的数据被分割成块,作为磁盘与主存之间的传输单元 虚拟页: (1)VM系统将虚拟存储器分割为 阅读全文
posted @ 2015-08-28 16:43 弱水三千12138 编辑
摘要:虚拟存储器:它为每个进程提供了一个大的,一致的,和私有的地址空间。(1)它将主存看成一个在存储在磁盘上的地址空间的高速缓存。主存中只保存活动区域,并根据需要在在磁盘和主存之间来回传送数据。通过这种方式高效的使用了主存。(2)为每一个进程提供了一致的地址空间,从而简化了存储管理。(3)保护了每个进程的... 阅读全文
posted @ 2015-08-28 15:28 弱水三千12138 编辑
摘要:信号:(1)软件形式的异常,称为unix信号,它允许进程中断其它进程。(2)一个信号就是一条小消息,他通知进程系统中发生了某种类型的事件。(3)某种信号类型都对应着某种系统事件。8.5.1 信号术语发送信号:内核通过更新目的进程的上下文中的某个状态,发送一个信号给目的进程。有两个原因:(1)内核检测... 阅读全文
posted @ 2015-08-26 10:04 弱水三千12138 编辑
摘要:8.4 进程控制8.4.1 获取进程ID(1)pid_t getpid(void)和pid_t gettpid(void)函数,其中返回的是pid_t整数值(2)pid_t在types.h文件中被定义8.4.2 创建和终止进程进程的三种状态:(1)运行:进程要么在CPU运行,要么在等待被调度(且最终... 阅读全文
posted @ 2015-08-25 17:07 弱水三千12138 编辑
摘要:进程:(1)进程的经典概念就是执行中的一个程序的实例。(2)系统中的每一个程序都是运行在进程的上下文中。(3)上下文:由程序正确运行所需的状态组成,这个状态包括:存放在存储器中的代码和数据,它的栈,通用目的寄存器,程序计数器,环境变量,以及打开的文件描述符等等。进程给程序提供的关键抽象:(1)独立的... 阅读全文
posted @ 2015-08-25 15:19 弱水三千12138 编辑
摘要:异常:(1)异常是异常控制流(ECF)的一部分,它一部分是由硬件实现的,一部分是由操作系统实现的。(2)异常:就是控制流的突变,用来响应处理器中发生的变化。(3)当处理器检测到异常信号时,会通过一各异常表的跳转表,进行一个间接的过程调用,调用一个专门处理这种异常的子程序,处理完后返回返回:3种可能 ... 阅读全文
posted @ 2015-08-24 21:24 弱水三千12138 编辑
摘要:链接(1)链接是将各个代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可以被加载在存储器上执行。链接执行时期:(2)链接可在编译时执行:源代码被翻译成机器代码时(3)链接可在加载时执行:也就是程序被加载器加载到存储器并执行时。(4)甚至可以在运行时:由应用程序来执行。链接好处:(5)链接... 阅读全文
posted @ 2015-08-13 09:13 弱水三千12138 编辑
摘要:3.8 数组的分配和访问(1)基本原则:int A[10]首先,它在存储器中分配一个sizeof(int)*10字节的连续区域。其次,它引入了标识符A。可以用A作为指向数组开头的指针。若是用xA来表示数组在内存中的起始位置,数组存放在xA+sizeof(int)*10的连续区域中(2)嵌套数组数组元... 阅读全文
posted @ 2015-08-10 22:17 弱水三千12138 编辑
摘要:3.1 linux采用平坦寻址的方式,及程序员将整个存储空间看做一个大的字节数组3.2 程序编码程序需要经过: 预处理器 :将#include还有#define宏进行处理(扩展) 编译器: 产生源代码的汇编代码code.s 汇编器: 目标代码(是机器码的一种形式),包含所有的指令的二进制形式,... 阅读全文
posted @ 2015-08-06 16:40 弱水三千12138 编辑
摘要:分类:理解计算机编译器的工作过程作者:阮一峰日期:2014年11月11日源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include int main(void){ fputs("Hello, world!\n", stdout); ... 阅读全文
posted @ 2015-03-18 17:35 弱水三千12138 编辑

点击右上角即可分享
微信分享提示