操做系统

tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51,51)">node

数据段及所拥有的系统资源,如已打开的文件、I/O设备等。linux

4) 系统开销算法

建立和撤销时,进程开销比线程高。同步通讯线程比进程容易。网络

 

关于IPC(进程间通讯)

高级通讯可归结为三类:共享存储器系统、消息传递系统、管道通讯系统。函数

管道(Pipe)及有名管道(named pipe):

管道可用于具备亲缘关系进程间的通讯,有名管道克服了管道没有名字的限制,所以,除具备管道所具备的功能外,它还容许无亲缘关系进程间的通讯;性能

信号(Signal):

信号是比较复杂的通讯方式,用于通知接受进程有某种事件发生,除了用于进程间通讯外,进程还能够发送信号给进程自己;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又可以统一对外接口,用sigaction函数从新实现了signal函数);线程

报文(Message)队列(消息队列):

消息队列是消息的连接表,包括Posix消息队列system V消息队列。有足够权限的进程能够向队列中添加消息,被赋予读权限的进程则能够读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。设计

共享内存:

使得多个进程能够访问同一块内存空间,是最快的可用IPC形式。是针对其余通讯机制运行效率较低而设计的。每每与其它通讯机制,如信号量结合使用,来达到进程间的同步及互斥。指针

信号量(semaphore):

主要做为进程间以及同一进程不一样线程之间的同步手段。日志

套接口(Socket):

更为通常的进程间通讯机制,可用于不一样机器之间的进程间通讯。起初是由Unix系统的BSD分支开发出来的,但如今通常能够移植到其它类Unix系统上:Linux和SystemV的变种都支持套接字。

内存调度

1.  先来先服务和短做业(进程)优先调度算法

(1)     先来先服务调度算法(FCFS)

(2)     短做业(进程)优先调度算法(SJ(P)F)

a)    不利于长做业

b)   未考虑做业的紧迫程度

c)    因为做业(进程)的长度只是根据用户估计,不必定能真正作到短做业优先调度

2.高优先权优先调度算法

优先权调度算法的类型

(1)     非抢占式优先权算法

(2)     抢占式优先权调度算法

优先权类型

1)    静态优先权

在建立进程时肯定,且在进程的整个运行期间保持不表。

肯定进程优先权的依据有以下三个方面:

(1)     进程类型

(2)     进程对资源的要求

(3)     用户要求

2)动态优先权

       在建立进程时所赋予的优先权,是能够随着进程的推动或随其等待时间的增长而改变的,以便得到更好的调度性能。

3.最高相应比优先调度算法

优先权 = (等待时间+要求服务时间)/要求服务时间

做业随着等待时间变长使响应比增长,但每次调度以前,都须要先作响应比的计算,会增长系统开销。

 

4.基于时间片的轮转调度算法

1.时间片轮转法

       时间片大小的肯定,过短有利于短做业,可是频繁的发生中断,进程上下文的切换,增长系统的开销;太长算法退化成FCFS算法。

2.  多级反馈队列调度算法

不事先知道各个进程所需的执行时间,并且还能够知足各类类型进程的须要,被公认进程调度算法较好。

(1)     设置多个就绪队列,并为各个队列赋予不一样的优先级。

(2)     当一个新进程进入内存后,首先放在第一个队列末尾,按FCFS原则排队等待调度,若是调度后还没完成,将其放到第二个就绪队列末尾。

(3)     仅当第一个队列空闲时,调度程序才开始调度第二队列中的进程运行。

多级反馈队列调度算法的性能

(1)     终端型做业用户

(2)     短批处理做业用户

(3)     长批处理做业用户

文件系统

Fread的过程

要对文件进行读写,系统首先开辟一块内存区来保存文件信息,保存这些信息用的是一个结构体,将这个结构体typedef为FILE类型。咱们首先要定义一个指向这个结构体的指针,当程序打开一个文件时,咱们得到指向FILE结构的指针,经过这个指针,咱们就能够对文件进行操做。

size_tfread(void *buffer,size_t size,size_t count,FILE *stream);

功 能:从一个文件流中读数据,读取count个元素,每一个元素size字节.若是调用成功返回count。如不成功,返回实际读取的元素个数,小于count.

参 数:buffer用于接收数据的内存地址,大小至少是size*count字节.

size单个元素的大小,单位是字节

count元素的个数,每一个元素是size字节.

stream输入流

返回值:实际读取的元素个数.若是返回值与count不相同,则可能文件结尾或发生错误.

从ferror和feof获取错误信息或检测是否到达文件结尾.

在文件系统中,元数据(好比ext2中的inode)的基本做用是什么?ext2跟ext3的根本区别是什么?

元数据(Metadata)是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程当中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。

在文件系统中,元数据的加锁机制是保证元数据事务操做正确进行的重要机制。

Inode

译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。

在ext2文件系统中,文件由inode(包含有文件的全部信息)进行惟一标识。一个文件可能对应多个文件名,只有在全部文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不一样的,并由内核负责同步。

inode表包含一份清单,其中列出了对应文件系统的全部 inode 编号。当用户搜索或者访问一个文件时,UNIX 系统经过 inode 表查找正确的 inode 编号。在找到 inode 编号以后,相关的命令才能够访问该 inode ,并对其进行适当的更改。

ext2是linux系统中高效、可靠的文件系统,可用在硬盘或可移动存储介质上。它是ext的扩展,被认为是基于速度和CPU使用的最高效的文件系统。

ext3是ext2的扩展,它在ext2的基础上增长了日志功能,或者说它是ext2的日志文件系统版本。

相关文章
相关标签/搜索