信号量机制、共享存储区通信
共享存储器系统
6
进 程 管 理
发送进程
消息缓冲机制(直接通信)
在自己的内存空间设置一个 把要发送的消息填入发送区 在自己的内存 空间设置一个
发送区
接收区
接收进程
公用缓冲区
两通信进程必须满足下列条件
1 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程 取消息时也禁止其他进程访问缓冲区消息队列 2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息
14
进 程 管 该发送进程调用过程 deposit(m) 将消息发送 理 到邮箱,接收进程调用过程 remove(m), 将消息 m
从邮箱中取出。 Fromnum—发送进程的私用信号量。记录信箱 空格,初值为n Mesnum— 接收进程的私用信号量。记录信箱 有消息的个数 初值为0
15
进 程 管 理
12
进 程 管 理
信箱可由OS创建,也可由用户进程创建,创建 者是信箱的拥有者,据此可把信箱分为:私用 信箱,公用信箱,共享信箱。 在利用信箱通信时,在发送进程和接收进程之 间,存在着四种关系: 一对一关系:即可以为发送进程和接收进程建 立一条专用的通信链路; 多对一关系:允许提供服务的进程与多个用户 进程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进 程交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个 进程都能向信箱投递消息,也可取走属于自己 的消息。
操作系统进程通信
进程通信-----消息传递通信的实现方式
通信链路:
第一种方式(主要用于计算机网络中):由发送进程在通信 之前用显式的“建立连接”命令请求系统为之建立一条通 信链路,在链路使用完后拆除链路。
第二种方式(主要用于单机系统中):发送进程无须明确提 出建立链路的请求,只须利用系统提供的发送命令(原 语),系统会自动地为之建立一条链路。
接
通
▪PCB中有关通信的数据项
size: text: next:
信 方
mq :消息队列头指针;
式
mutex :消息队列互斥信号量,初值为1;
sm 同步信号量,用于消息队列中的消息计数,初值为0;
▪消息缓冲通信机制还应包含的内容:
Emphead:空缓冲队列头指针; Bufmutex:缓冲池的互斥信号量,初值为1;
信
方
把消息缓冲块链入接收者的消息缓冲队列中
式
➢ receive(b)原语描述:
从消息缓冲队列中取一条消息
写到以b为首址的接收区
释放消息缓冲块
通信描述 原语实现
二、实例—消息缓冲队列通信机制
3、实现
typedef struct MessageBuffer
➢ 数据结构
sender:
3.2.2
直
▪消息缓冲块
▪对消息链表互斥访问的信号量S,初值为1 ▪私有信号量S1,表示当前消息链中消息的数目, 初值为0
网龙笔试题及答案
一.题型:
问答五题,程序两题,选择10来题
二.题目
1。堆和栈的区别与联系(C/C++的内容,不是数据结构的内容)
1、栈区(stack)由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap)一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事。
区别:
1.管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生内存溢出。
2。空间大小:堆内存几乎是没有什么限制。栈一般都是有一定的空间大小.
3。碎片问题:对于堆来讲,频繁的new/delete会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低.对于栈来讲,则不会存在这个问题.
4. 分配方式:堆都是动态分配的,没有静态分配的堆.栈有2种分配方式:静态分配和动态分配。
5. 分配效率:栈的效率比较高.堆的效率比栈要低得多.
见:hi.baidu。com/sige_online/blog/item/f06097ecb006bb3f2797918b。html 2。重载和覆盖的区别与联系
重载是指不同的函数使用相同的函数名,但函数的参数个数或类型不通。调用的使用根据函数的参数来区别不同的函数。
覆盖是指派生类中重新对基类的虚函数重新实现。即函数名和参数都一样,只是函数的实现体不一样.
3。什么是多重继承,好处及缺点
多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。
优点:可以使用多重继承编写非常复杂、但很紧凑的代码,如C++ ATL库。
操作系统试卷
南邮2008/2009学年第一学期
《操作系统A 》期末试卷(B )
院(系) 班级 学号 姓名
试卷
请考生注意:
1、答案请写在答题纸上,写在试卷上一律无效!
2、考试完毕,请将答题纸、试卷、草稿纸全部交给监考老师,不得带出考场
一、单项选择题(每题2分,共20分)
1、设定一个作业建立一个进程,为了使长、短和交互式作业都能得到及
时的运行,应选用的调度算法是( )。
A .先来先服务算法
B .短作业优先算法
C .多级反馈队列算法
D .优先数算法 2、进程从运行状态进入就绪状态的原因可能是( )。
A. 被选中占有处理机
B. 等待某一事件
C. 等待的事件已发生
D. 时间片用完 3、利用管道进行的进程通信机制实质是( )。 A. 信号通信机制
B. 共享存储区通信机制
C. 共享文件通信机制
D. 消息传递通信机制
4、某页式存储管理系统中,地址寄存器长度为24位,其中页号占14位,则主存的
分块大小应该是( )字节。
A .210
B .10
C .14
D .214 5、下列说法中错误的是( )。 A. 作业分得的主存块数越多,缺页中断率越低 B. 作业划分的页面越小,缺页中断率越低 C. 程序局部性越好,缺页中断率越低 D. OPT 算法的缺页中断率最低
装 订 线 内 不 要 答 题
自
觉
遵 守 考 试 规 则,诚 信 考 试,绝 不
作 弊
6、I/O设备的控制方式中比DMA方式效率高的是()。
A.询问方式
B.中断方式
C. 通道方式
D. 以上都不是
7、Spooling技术是一种实现虚拟()的技术。
A. 处理器
B. 设备
操作系统填空题
1、解决死锁问题的基本方法有—预防死锁_、_避免死锁_、_检测死锁_和_解除死锁。
2、当前进程若因时间片用完而被暂停执行时,该进程应转变为—就绪—状态;若因发生某事件而不被继续运行时,该进程应转变为—阻塞—状态。处于就绪状态的进程被调度转变为—执行—状态。
3、在分页系统中的地址结构可分为—页号—和—位移量—两部分;在分段系统中的地址结构可分
为—段号—和—段内地址—两部分。
4、在段页式系统中(无快表),为获得一条指令或数据,都需三次访问内存。第一次从内存中取得—页表始址_,第二次从内存中取得—该页所在的物理块号_,第三次从内存中取得—指令或数据_。
5、在作业_装入—时进行的链接称为静态链接;在作业运行中—调用—时进行的链接称为动态链接。
6、利用缓冲区能有效地缓和_cpu—和_I/O设备—之间速度不匹配地矛盾。
7、虚拟设备功能是使—独立设备—变成能被多个进程同时使用的—共享设备_。
1、设计现代OS的主要目标是—有效性_、—方便性_、—可扩充性—和—开放性_。
2、设备分配程序在分配外部设备时,先分配—设备_,再分配_控制器_,最后分配_通道_。
3、内存管理的主要功能是:—内存分配_、_内存保护_、_地址映射_和—内存扩充 _等。
4、页是信息的—物理—单位,进行分页是出于—系统管理—的需要;段是信息的—逻辑—单位,进行分段是出于—用户—的需要。
5、在内存分配的动态分区分配方式中,可利用—首次—适应算法、—循环首次—适应算法和_最佳—适应算法等分区分配算法。
6、在进程的整个生命周期中,系统总是通过其_PCB—对进程进行控制,PCB是—进程—存在的唯一标志.
进程同步与通信
管道的类型
管道的类型有:
无名管道 有名管道
有名管道和无名管道的读写方式是相同的。
无名管道
无名管道是用系统调用pipe()建立的无名 文件,用该系统调用所返回的文件描述符 来标识该文件。 只有调用pipe的进程及其子孙进程才能利用 该管道文件进行通信。
有名管道
有名管道是利用mknod系统调用建立的,是 可以在文件系统中长期存在的具有路径名的 文件, 其他进程可以知道有名管道的存在并能利用 路径名来访问该文件。 对有名管道的访问方式象访问其他文件一样, 都需先用open系统调用去打开它。
信号的发送
信号的发送是指由发送进程把信号发送到指 定进程信号域的某一位上。 如果目标进程正在一个可被中断的优先级上 睡眠,核心便将它唤醒,发送过程就此结束。 一个进程可能在其信号域中有多个位被置位, 代表有多种类型的信号到达,但对于一类信 号,进程却只能记住其中的一个。
发送信号
系统调用kill向一个进程或一组进程发送一个 信号。该系统调用的语法格式如下: int kill(pid,sig); int pid,sig; 其中,sig是要发送的信号,pid参数是进程 标识号。 pid参数除了可以取进程标识号之 外,还可以取下列一些特殊值:
struct PCB { ┇ mq;消息队列队首指针 mutex;消息队列互斥信号量 mutex; sm;消息队列资源信号量 ┇ }
操作系统实验 Linux下C程序及运行结果
为1的消息,则作为结束信号,取消该队列,并退出SERVER。SERVER每接收到
一个消息后显示一句“(server)received”。
CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。最
后一个消息,即是SERVER端需要的结束信号。CLIENT每发送一条信息后显示一
返回值 返回结构tm代表目前的当地时间。 结构tm的定义为 struct tm {
int tm_sec; //代表目前秒数,正常范围为0-59,但允许至61秒 int tm_min; //代表目前分数,范围0-59
int tm_hour; //从午夜算起的时数,范围为0-23 int tm_mday; //目前月份的日数,范围01-31
printf("parent %d\n",i);
}
}
进程2截图如下:
进程2截图
实验三 进程间通信
实验目的:
Linux系统的进程通信机构(IPC)允许在任意进程间大批量的交换数据。本实验
的目的是了解和熟悉Linux支持的通信机制、共享存储区机制及信号量机制。
实验预备内容:
阅读Linux系统的msg.c sem.c shm.c等源码文件,熟悉Linux的三种通信机制。、
msgsnd(msgqid,&msg,1024,0); /*发送消息msg入msgid消息队列*/
OS实验六——精选推荐
OS实验六
《操作系统》实验报告
实验三进程管理及进程通信
⼀.实验⽬的
利⽤Linux提供的系统调⽤设计程序,加深对进程概念的理解。体会系统进程调度
的⽅法和效果。了解进程之间的通信⽅式以及各种通信⽅式的使⽤。
⼆.实验准备
复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调⽤。它会引导你学会怎样掌握进程控制。阅读例程中的程序段。
三.实验⽅法
⽤vi 编写c 程序(假定程序⽂件名为prog1.c)
编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c
运⾏$./prog1.o
四.实验内容及步骤
⽤v i编写使⽤系统调⽤的C语⾔程序。
1.编写程序。显⽰进程的有关标识(进程标识、组标识、⽤户标识等)。经过5 秒
钟后,执⾏另⼀个程序,最后按⽤户指⽰(如:Y/N)结束操作。
编译运⾏结果:
2.编写程序。实现⽗进程创建⼀个⼦进程。体会⼦进程与⽗进程分别获得不同返
回值,进⽽执⾏不同的程序段的⽅法。
编译运⾏:
思考:⼦进程是如何产⽣的?⼜是如何结束的?⼦进程被创建后它的运⾏环境是怎样建⽴的?
答:⼦进程由fork()函数创建,通过exit()函数⾃我结束,⼦进程被创建后核⼼将为其分配⼀个进程表项和进程标识符,检查同时运⾏的进程数⽬,并且拷贝进程表项的数据,由⼦进程继承⽗进程的所有⽂件。
3.编写程序。⽗进程通过循环语句创建若⼲⼦进程。探讨进程的家族树以
进程通信
进程间通信的方式
• 信号(signal)通信机制;
• 共享存储区(shared memory)通信 机制;
• 共享文件(shared file)通信机制;
• 消息传递(message passing)通信机 制。
发送区
接收进程名:Q 信件长:5c 正文: ABCDE
进程Q的PCB
消息队列首指针 mutex sm
发送进程名:P 信件长:5
正文:ABCDE 后继信件 缓冲指针
进程Q receive(接收区首址)
发送进程名:P 信件长:5 正文: ABCDE
接收区
0
UNIX消息传递机制
消息队列 头结构
消息缓冲 区
/*发送空消息*/
• cobegin
• producer;
• consumer;
• coend
• end
3.5.5 有关消息传递实现的 若干问题
• 信箱容量问题 • 多进程与信箱相连的信件接收问题 • 信箱的所有权问题 • 信件的格式问题 • 通信进程并行性问题
消息缓冲通信过程
进程P Send(发送区首址)
• procedure send(varB:box,M:message) • var I:integer; • begin • if B.count=B.size then W(B.s1); • i:=B.count+1; • B.letter[i]:=M; • B.coumt:=I; • R(B.S2) • end;{send}
进程通信-用共享内存和PV操作实现邮箱通信
} else return value;}
• • • • • • • •
• • • • • • • •
union semun{ int val; struct semid_ds *buf; unsigned short *array; }; int creatsem(int i,int w){ int value; if(w) value = semget((key_t)i,1,0667|IPC _CREAT); else value=semget((key_t)i,1,06 66|IPC_CREAT); if(value==-1) { printf("semget error"); return 0;
SETVAL:用于初始化信号量为一个已知的值。所需要的值作为联合semun的val成员来传递。在信号量第一次 使用之前需要设置信号量。 IPC_RMID:当信号量不再需要时用于删除一个信号量标识。
semctl函数依据command参数会返回不同的值。对于SETVAL与IPC_RMID,如果成功则会返回0,否则会 返回-1。
• semop
函数semop用来改变信号量的值: int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);
第一个参数,sem_id,是由semget函数所返回的信号量标识符。第二个参数,sem_ops,是 一个指向结构数组的指针,其中的每一个结构至少包含下列成员:
计算机操作系统_期末复习考试题库
操作系统负责为方便用户管理计算机系统的()。
在单一处理机上,将执行时间有重叠的几个程序称为()。
操作系统是一组()。
以下()项功能不是操作系统具备的主要功能。
单机操作系统的共享资源是指()
财务软件是一种()
在分时系统中,时间片一定,(),响应时间越长。
UNIX命令的一般格式是()
并发是并行的不同表述,其原理相同。
[参考答案] 错误
多用户操作系统一定是具有多道功能的操作系统。
[参考答案] 正确
并发和_________是操作系统的两个最基本的特征,两者之间互为存在条件。[参考答案]共享
在多道程序设计的计算机系统中,CPU()。
现代操作系统的两个基本特征是()和资源共享。
从总体上说,采用多道程序设计技术可以()单位时间的算题量,但对每一个算题,从算题开始到全部完成所需的时间比单道执行所需的时间可能要()。
世界上第一个操作系统是()。
()没有多道程序设计的特点
引入多道程序的目的是()。
各进程向前推进的速度是不可预知的,体现出“走走停停”的特征,称为进程的()。
并发是并行的不同表述,其原理相同。
[参考答案] 错误
具有多道功能的操作系统一定是多用户操作系统。
[参考答案] 错误
并发和_________是操作系统的两个最基本的特征,两者之间互为存在条件。
[参考答案]共享
在批处理方式下,操作员把一批作业组织成()向系统成批输入。
系统调用是由操作系统提供的内部调用,它()。
从系统的角度出发,希望批处理控制方式下进入输入井的作业()尽可能小。
作业在系统中存在与否的唯一标志是()。
作业调度程序从处于()状态的队列中选取适当的作业调入主存运行。
共享存储器系统
P(fromnum) 空格数减1
P(mesnum) 消息个数加1
选择空格x
选择满格x
将消息m放入空格x中
把满格x中的消息取出放m中
置格x的标志为满
置格x标志为空
V(mesnum) 向接收进程发送消息 V(mesnum) 空格个数加1
end
5
消息缓冲机制(直接通信)
在自己的内存空间设置一个
发送进程
把要发送的消息填入发送区
发送区 接收区
在自己的内存 空间设置一个
公用缓冲区
接收进程
两通信进程必须满足下列条件
1 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程取消息时也禁止其他 进程访问缓冲区消息队列
Fromnum—发送进程的私用信号量。记录信箱 空格,初值为n
Mesnum—接收进程的私用信号量。记录信箱 有消息的个数 初值为0
14
Fromnum记录信箱空格,初值为n
Mesnum记录信箱有消息的个数 初 值为0
Deposit(m);
Remove (m)
Begin local x
being local x
1
进程通信的类型
一、单机系统中进程间通信的四种形式 P62
主从式、会话式、消息或邮箱机制、共享存储区方式
UNIX操作系统介绍71绪言UNIX操作系统的结构
B、异步写方式:启动输出后,调用者进程不 用等待写操作的完成就返回。
C、延迟写方式:不真正启动磁盘,只是在缓 冲区首部设置延迟写标志,然后便释放该缓冲 区,并将它加入到空闲区缓冲区链表的尾部。 以后,当有进程申请到这个缓冲区时,才将该 缓冲区中的信息写入磁盘。
7.4 文件管理
一、UNIX文件系统的特点
命令是用户与系统的交互式操作,它由Shell进行 解释,并调用系统内核的相应部分执行。
Shell有三类特征:命令语言,命令解释程序和程序设 计语言。
C、UNIX具有一个可装卸的分层树型结构的文件系 统。 D、UNIX系统把所有的外部设备都当作文件,并分 别赋予它们对应的文件名。
wk.baidu.com
E、可移植性。 UNIX系统核心程序的绝大部分源程 序系统上的支持软件都用C 语言写的。
修改位,1为已修改过
虚拟地址 页号
系统区段页表
页内位移
系统 区段
基址寄存器 长度寄存器
P0区 段
P0区段页表 基址寄存器 长度寄存器
物理 块号
页 内 位 物理地址 移
请求页式地址映象过程
四、交换与请求调页的区别: 交换技术换入换出整个进程,因此,一个进 程的大小受物理存储器的限制;而请求调页策略 在内存与外存之间来回传递的是存储页而不是整 个的进程,从而使得地址的映射具有更大的灵活 性,且允许进程的大小比可用的物理存储空间大 的多。
操作系统进程通信
进程通信-----消息传递系统
消息传递机制 : 进程间的数据交换以消息为单位,程序员利用系统的通信原语(要 进行消息传递时执行 send ;当接收者要接收消息时执行 receive )实 现通信。这种通信方式属于高级通信 。 优点: 操作系统隐藏了通信的实现细节,简化了通信程序编制的复杂性。 分类: 直接通信(消息缓冲通信):发送进程直接把消息发送给接收者, 并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队 列中取得消息。 间接通信(信箱通信):发送进程将消息发送到某种中间实体中 (信箱),接收进程从中取得消息。 在网络中称为电子邮件系统。
3.2.3 管道通信
进程通信-----直接消息传递系统实例
消息缓冲队列通信机制中的数据结构:
• (1)消息缓冲区。 在消息缓冲队列通信方式中,主要 利用的数据结构是消息缓冲区。
• 它可描述如下: • • • • • • typedef struct message_buffer{ int sender; // 发送者进程标识符 int size; //消息长度 char*text; //消息正文 struct message_buffer*next; //指向下一个消息缓冲区的指针 }
3.2.2
操作系统第二章作业本(含答案)
操作系统第⼆章作业本(含答案)第⼆章作业
第⼀次作业:
1.进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么?
答:三种基本状态:就绪状态、执⾏状态、阻塞状态。
(1)就绪状态→执⾏状态:进程分配到CPU资源(进程调度);
(2)执⾏状态→就绪状态:时间⽚⽤完
(3)执⾏状态→阻塞状态:I/O请求
(4)阻塞状态→就绪状态:I/O完成
2.在Linux系统中运⾏下⾯程序,最多可产⽣多少个进程?画出进程家族树。
main()
{
fork();
fork();
fork();
}
答:最多可以产⽣7个进程。
其家族树为:
3.试从动态性、并发性和独⽴性上⽐较进程和程序。
答:
1)动态性是进程最基本的特性,可表现为由创建⽽产⽣,由调度⽽执⾏,因得不到资源⽽暂停执⾏,以及由撤销⽽消亡,因⽽进程由⼀定的⽣命期;⽽程序只是⼀组有序指令的集合,并存放于某种介质上,其本⾝并
不具有运动的含义,因⽽是静态的;
2)并发性是进程的重要特征,同时也是OS的重要特征。引⼊进程的⽬的
正是为了使其程序能和其它建⽴了进程的程序并发执⾏,⽽程序本⾝(没有建⽴PCB)是不能并发执⾏的;
3)独⽴性是指进程实体是⼀个能独⽴运⾏、独⽴分配资源和独⽴接受调度的基本单位。凡未建⽴PCB的程序,都不能作为⼀个独⽴的单位来运⾏。
4.分析下列代码的功能:
答:
sleep_on实现进程的睡眠过程;
wake_up实现进程的唤醒过程。
第⼆次作业:
1.同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则?
答:
同步机制应遵循四个基本准则:
操作系统原理实验报告
操作系统原理实验报告
一、课程设计的题目:
根据“操作系统原理”课程的课堂教学内容,结合自己的知识积累情况,题目可从下述拟题中选择,亦可自定。
二、实验设计的内容:
在Linux或Windows操作系统下,用C语言进行操作系统相关的设计开发,内容可关于“并发程序设计”、“处理机管理”、“作业管理”、“存储管理”、“文件系统管理”、“设备管理”等等。
三、参考资料:
1、清华大学出版,张尧学《计算机操作系统教程》配套的《习题解答与实验指导书》中范例;
2、清华大学出版,任爱华《操作系统实用教程》中的实例设计;
3、《Linux下C语言编程入门教程》、《Linux软件工程师(C语言)实用教程》等;
4、网上与操作系统设计与开发相关的文献资料。
四、重要操作环节
1、步骤:
选题(4、5人一小组)--→提交小组名单--→分析、编写程序--→上机调试--→分析结果--→评价结果--→写出设计报告
2、设计报告的主要内容:
①、设计说明:设计主要完成的任务、解决的主要问题;
②、工作原理:找出教材中的相关工作原理并简要说明;
③、详细设计:包括调用的主要系统函数说明、程序流程图、程序代码、关键语句注释;
④、运行结果:要求写出运行结果或抓图给出;
⑤、分析结果:要求用操作系统原理有关理论解释说明;
⑥、调试步骤以及调试过程中出现的问题及解决方法;
⑦、参考文献:5篇以上;
⑧、以学年论文格式提交文档资料,要有统一的封面和实验心得体会。
五、成绩评定
1、必做实验10分,选做实验20分;
2、各组同学代表打分占50%,实验报告的规范化程度50%;