导航:首页 > 编程系统 > linux管程

linux管程

发布时间:2021-10-25 21:59:09

A. linux适合编程吗

如果只是从人工智能的角度来说,linux的优势并不大。我能想到的几个可能的优势有:

1) 包管理。比如你要用c++的一个库opencv,linux下面直接apt-get install libopencv,然后在makefile里面加上-I `pkg-config opencv`就好了。如果是(老版)visual studio里面你要先打开浏览器,搜索opencv的网站,下载,解压,记住路径,回到vs右击工程,点属性,vc++ directories,点编辑,点添加,把路径粘贴进去。蛋都要碎了。
但是!这个优势只在vs2010发布以前有效。新版的vs你只需要右击工程,点nu-get package manager,然后搜索opencv点确定就没了。
2) 各种自动化。比如你写了个训练svm的程序,有1000个svm要训练。在linux下面可以把这个训练的程序编译成可执行文件trainsvm,接口是类似./trainsvm input1.txt svm1.dat。然后在命令行下面seq 1 1000 | xargs -I{} -n 1 -P 12 bash -c './trainsvm input{}.txt svm{}.dat'一下就开了12个进程一块训练,某个进程训练完了以后立马会有下一个补上有木有。(就是管程的概念)我在windows下面用c#实现这样的功能要将近100行,还没有xargs灵活。批量处理超级方便啊。用parallel还可以在多台机器上分布式训练。
但是!你在windows上装个cygwin这些也全都有。。
3) 有时候数据量太大了需要去amazon租ec2并行计算。windows机器比linux贵啊摔。还有配置相对慢。linux弄个小脚本分分钟就把环境都配好了(夹个私货,比如这是我的ec2 linux配直脚本 https://github.com/grapeot/debianinit )。价格这个无解。。配置方面windows的非官方包管理器chocolatey还比较弱,如果有谁知道如何快速配置windows环境欢迎指教。
所以基本结论是,如果只是想日人工智能,老老实实拱算法先,哪个熟用哪个。如果蛋痛想折腾,linux可玩性和逼格都要更胜一筹。而且用熟了以后完成任务(get things done)的能力会加强不少。

B. linux 下如何使用管程

C. 进程同步与进程间的通信相比缺点是什么

按照java的思想来说有原子变量、互斥(管程monitor)、锁、条件变量、信号量。linux里还会有spinlock。

D. 基于Linux的进程同步与通信的模拟实现 求c或java代码

这个不是生产者、消费者那个例子一样的吗。

E. 计算机等级考试三级嵌入式的题型是什么

根据2014年的三级嵌入式考试,题型包括:1.选择题,2.填空题,3.简答题,4.名词解释题。具体考 试 范 围 :
一、嵌入式系统的硬件
1. 嵌入式处理器
嵌入式微处理器(Embedded Microprocessor Unit, EMPU)、嵌入式微控制器(Microcontroller Unit, MCU)、嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP)、嵌入式片上系统(System On Chip)的定义与功能 。
2. 存储器
只读存储器ROM(Read Only Memory)、随机存储器RAM(Random Access Memory)和闪存的定义与功能 。
3. 输入输出设备
液晶显示屏(liquid crystal display:LCD)、触摸屏、语音输入输出技术、键盘的功能 。4. 电源转换与管理
电源IC 分类、电源IC 的特点 5. 接口技术
嵌入式系统接口的、并行接口、串口、USB、PCMCIA 和CF、红外线接口 。
6. 总线
总线(总线的主要参数:总线的带宽,总线的位宽,总线的工作时钟频率),I2C 总线,CAN 总线 。
二、嵌入式操作系统 1. 操作系统基本理论
a) 内存管理:内存管理功能,内存分割(固定分割(Fixed Partitioning)与动态分割(Dynamic Partitioning)),虚拟内存(分页(Paging)与分段(Segmentation)),页替换算法;
b)进程与中断管理:进程状态与状态转换,进程描述,进程控制,并发,Dekker 算法,Peterson 算法,并发控制硬件方法,信号量,管程,消息传递,死锁与死锁处理,中断及中断处理 ;
c) 调度机制:调度类型,单处理器调度算法(FCFS 算法,循环执行算法,SPN 算法,SRT 算法,HRRN 算法,反馈算法) ;
d) 实时调度:时钟驱动调度,基于优先级调度,速率单调算法,EDF算法,LST算法,非周期实时调度算法。
2. 嵌入式操作系统 ;
a) 嵌入式操作系统特点:实时性,小内核,可配置,易移植,高可靠性,低功耗;
b) 常见嵌入式操作系统:嵌入式Linux,Windows CE,Palm OS,QNX,uC/OS,VxWorks。
三、嵌入式Linux与开发环境
1.嵌入式Linux内核结构 嵌入式Linux的常见模块,与标准Linux的差别(缺少MMU模块);
2. 嵌入式Linux内存管理 内核载入的进程的地址空间,内存的分配和释放,虚拟内存与内存页面的换入与换出;
3. 嵌入式文件系统 Ext2fs,临时文件系统tmpfs。

F. linux管程实验报告 c 语言的

神马东东?

G. 考计算机专业的研究生时考的操作系统是什么系统,是windows、linux、还是unix啊

操作系统考研不针对具体系统,而是针对于操作系统理论知识,当然,可能会涉及到诸如linux和windows中的某些细微的机制。
例如2010年的考纲是这样的:
【考查目标】
1、了解操作系统在计算机系统中的作用、地位、发展和特点。
2、理解操作系统的基本概念、原理,掌握操作系统设计方法与实现技术。
3、能够运用所学的操作系统原理、方法与技术分析问题和解决问题。
一)操作系统概述
(一)操作系统的概念、特征、功能和提供的服务
(二)操作系统的发展与分类
(三)操作系统的运行环境
二)进程管理
(一) 进程与线程
1、进程概念
2、进程的状态与转换
3、进程控制
4、进程组织
5、进程通信:共享存储系统、消息传递系统和管道通信。
6、线程概念与多线程模型
(二)处理机调度
1、调度的基本概念
2、调度时机、切换与过程
3、调度的基本准则
4、调度方式
5、典型调度算法:先来先服务调度算法、短作业(短进程、短线程)优先调度算法优先调度算法、时间片轮转调度算法、优先级调度算法、高响应比优先调度算法和多级反馈队列调度算法。
(三)进程同步
1、进程同步的基本概念
2、实现临界区互斥的基本方法:软件实现方法和硬件实现方法。
3、信号量
4、管程
5、经典同步问题:生产者-消费者问题、读者-写者问题、哲学家进餐问题。
(四)死锁
1、死锁的概念
2、死锁处理策略
3、死锁预防
4、死锁避免:系统安全状态(银行家算法)
5、死锁检测和解除
三)内存管理
(一)内存管理基础
1、内存管理概念
程序装入与链接;逻辑地址与物理地址空间;内存保护。
2、交换与覆盖
3、连续分配管理方式
4、非连续分配管理方式
分页管理方式;分段管理方式;段页式管理方式。
(二)虚拟内存管理
1、虚拟内存基本概念
2、请求分页管理方式
3、页面置换算法:最佳置换算法(OPT)、先进先出置换算法(FIFO)、最近最少使用置换算法(LRU)、时钟置换算法(CLOCK)。
4、页面分配策略
5、抖动:抖动现象、工作集。
6、请求分段管理方式
7、请求段页式管理方式
四)文件管理
(一)文件系统基础
1、文件概念
2、文件结构:顺序文件、索引文件、索引顺序文件。
3、目录结构:文件控制块和索引节点、单级目录结构和两级目录结构、树形目录结构、图形目录结构。
4、文件共享
5、文件保护
(二)文件系统实现
1、文件系统层次结构
2、目录实现
3、文件实现
(三)磁盘组织与管理
1、磁盘的结构
2、磁盘调度算法
3、磁盘的管理
五)输入输出(I/O)管理
(一)I/O管理概述
1、I/O设备
2、I/O管理目标
3、I/O管理功能
4、I/O应用接口
5、I/O控制方式
(二)I/O核心子系统
1、I/O调度概念
2、高速缓存与缓冲区
3、设备分配与回收
4、假脱机技术(SPOOLing)
5、出错处理

H. 操作系统的作品目录

第1章 操作系统引论 1
1.1 操作系统的基本概念 1
1.2 操作系统的发展与类型 5
1.2.1 无操作系统的手工操作阶段 5
1.2.2 单道批处理系统 6
1.2.3 多道批处理操作系统 7
1.2.4 分时操作系统 9
1.2.5 实时操作系统 10
1.3 操作系统的特征与功能 11
1.3.1 操作系统的特征 11
1.3.2 操作系统的功能 13
1.4 操作系统的结构设计 17
1.4.1 传统操作系统的结构 17
1.4.2 微内核结构操作系统 19
本章小结 22
思考与练习 22
第2章 进程管理 24
2.1 进程的基本概念 24
2.1.1 程序的顺序执行及其特性 24
2.1.2 程序的顺序执行及其特性 25
2.1.3 进程的定义和特征 25
2.1.4 进程控制块及其组织 26
2.2 进程状态及转换 28
2.2.1 进程基本状态及转换 28
2.2.2 进程的创建状态和终止状态 29
2.2.3 进程挂起的状态 29
2.3 进程控制 30
2.3.1 进程创建与终止 30
2.3.2 进程阻塞与唤醒 31
2.3.3 进程挂起与激活 31
2.4 进程同步 31
2.4.1 进程互斥与同步的基本概念 32
2.4.2 信号量机制 33
2.4.3 经典进程同步问题 37
2.4.4 管程 41
2.5 进程通信 44
2.5.1 进程通信的机制 44
2.5.2 直接消息传递系统 45
2.5.3 信箱通信 47
2.6 线程的基本概念 48
2.6.1 线程概念 48
2.6.2 线程的实现 50
2.6.3 线程模型 51
2.6.4 线程实例:Solaris 2 52
2.7 进程管理实例 53
2.7.1 Windows 的进程管理 53
2.7.2 Linux 的进程管理 55
本章小结 61
思考与练习 62
第3章 处理机调度与死锁 63
3.1 处理机调度概述 63
3.1.1 调度的层次 63
3.1.2 调度队列模型 64
3.1.3 调度基础 66
3.2 调度算法 69
3.2.1 先来现服务调度算法 69
3.2.2 最短作业(进程)优先调度算法 70
3.2.3 时间片轮转调度算法 71
3.2.4 基于优先权的调度算法 71
3.2.5 多级反馈队列调度算法 71
3.3 死锁 73
3.3.1 死锁的概念和处理策略 73
3.3.2 死锁预防 74
3.3.3 死锁避免 75
3.3.4 死锁检测和解除 78
3.4 进程调度实例 80
3.4.1 Windows 的线程调度 80
3.4.2 Linux 的进程调度 82
本章小结 84
思考与练习 85
第4章 存储器管理 86
4.1 概述 86
4.1.1 从源码到运行 88
4.1.2 存储管理的目的及分类 91
4.2 连续存储管理 92
4.2.1 单一连续内存分配 92
4.2.2 固定分区内存分配 92
4.2.3 动态分区内存分配 93
4.2.4 可重定位分区分配 96
4.3 离散分配 97
4.3.1 分页存储管理 98
4.3.2 分段存储管理 104
4.3.3 段页式存储管理 107
本章小结 109
思考与练习 110
第5章 虚拟内存管理 111
5.1 概述 112
5.1.1 虚拟存储器的原理 112
5.1.2 虚拟存储器的实现方法 113
5.2 分页虚拟存储管理 115
5.2.1 硬件支持 116
5.2.2 内存分配及页面调入策略 118
5.2.3 页面置换算法 121
5.2.4 抖动及其处理 126
5.3 分段及段页式虚拟存储管理 128
5.3.1 请求分段虚拟存储管理 128
5.3.2 请求段页式内存管理 130
5.4 存储管理实例 132
5.4.1 Windows 的内存管理 132
5.4.2 Linux 的内存管理 135
本章小结 138
思考与练习 139
第6章 文件管理 140
6.1 概述 140
6.1.1 文件及分类 141
6.1.2 文件系统及层次结构 143
6.1.3 文件操作 144
6.1.4 文件的存储介质 144
6.2 文件的结构 145
6.2.1 文件的逻辑结构 145
6.2.2 文件的物理结构 147
6.2.3 存储空间的管理 153
6.3 目录管理 156
6.3.1 文件控制块 156
6.3.2 索引节点 157
6.3.3 目录结构 158
6.3.4 目录操作 161
6.4 文件系统的安全与保护 162
6.4.1 文件的共享 162
6.4.2 影响安全性的因素 164
6.4.3 文件系统保护机制 164
6.5 磁盘空间管理 170
6.5.2 磁盘调度算法 171
6.5.3 提供磁盘访问速度的方法 173
6.6 文件系统实例 175
6.6.1 Windows 的文件系统 175
6.6.2 Linux 的文件系统 182
本章小结 192
思考与练习 193
第7章 设备管理 195
7.1 概述 195
7.1.1 设备及分类 195
7.1.2 设备管理的功能 196
7.2 I/O 系统结构 197
7.2.1 硬件结构及管理 198
7.2.2 I/O 系统的软件层次结构 199
7.3 设备分配 201
7.3.1 I/O 系统的数据结构 201
7.3.2 逻辑设备与物理设备 202
7.3.3 设备分配的独立性 203
7.3.4 虚拟设备的实现 204
7.4 设备处理 206
7.4.1 I/O 控制的方式 206
7.4.2 中断服务处理 211
7.4.3 设备驱动程序 213
7.4.4 缓冲技术 214
7.5 设备管理实例 217
7.5.1 Windows 的设备管理 218
7.5.2 Linux 的设备管理 225
本章小结 230
思考与练习 231
第8章 操作系统接口 232
8.1 操作系统的接口类型 232
8.1.1 用户接口 232
8.1.2 程序接口 234
8.2 联机用户接口 234
8.2.1 联机命令接口的实现 234
8.2.2 Windows 的 GUI 236
8.3 系统调用 236
8.3.1 基本概念 236
8.3.2 系统调用的实现 239
8.4 Windows 和 Linux 系统调用 240
8.4.1 Windows 系统调用 240
8.4.2 Linux 系统调用 242
本章小结 248
思考与练习 249
第9章 常见的操作系统 250
9.1 操作系统纵览 251
9.1.1 早期的操作系统 251
9.1.2 UNIX 家族史 254
9.1.3 微软帝国 258
9.1.4 Mac OS 264
9.1.5 自由软件联盟 267
9.2 嵌入式操作系统 271
9.2.1 嵌入式操作系统概述 271
9.2.2 手机操作系统 272
9.2.3 其他嵌入式操作系统 279
9.2.4 嵌入式系统的应用及发展趋势 281
9.3 分布式操作系统 282
9.3.1 分布式系统的引入 282
9.3.2 分布式系统的定义 282
9.3.3 分布式操作系统的特点 282
9.3.4 分布式系统的优点 283
9.4 网络操作系统 284
9.4.1 网络操作系统的定义 284
9.4.2 网络操作系统的特点 284
9.4.3 网络操作系统的功能 285
9.5 多处理机操作系统 285
9.5.1 多处理机操作系统的定义 285
9.5.2 多处理机操作系统的分类 285
9.5.3 多处理机操作系统的优点 287
本章小结 287
附录 小型嵌入式实时操作系统开发实例 288
需求规格说明 290
概要设计说明 291
参考文献 306

I. 进程间和线程间的协作区别在哪为什么需要内核实现通信与同步

进程间和线程间的协作区别:
进程互斥、同步的概念

进程互斥、同步的概念是并发进程下存在的概念,有了并发进程,就产生了资源的竞争与协作,从而就要通过进程的互斥、同步、通信来解决资源的竞争与协作问题。
下面是根据《操作系统教程》3.1.4 中的介绍,整理的进程互斥、同步的概念。
在多道程序设计系统中,同一时刻可能有许多进程,这些进程之间存在两种基本关系:竞争关系和协作关系。
进程的互斥、同步、通信都是基于这两种基本关系而存在的,为了解决进程间竞争关系(间接制约关系)而引入进程互斥;为了解决进程间松散的协作关系( 直接制约关系)而引入进程同步;为了解决进程间紧密的协作关系而引入进程通信。
第一种是竞争关系
系统中的多个进程之间彼此无关,它们并不知道其他进程的存在,并且也不受其他进程执行的影响。例如,批处理系统中建立的多个用户进程, 分时系统中建立的多个终端进程。由于这些进程共用了一套计算机系统资源,因而, 必然要出现多个进程竞争资源的问题。当多个进程竞争共享硬设备、存储器、处理器 和文件等资源时,操作系统必须协调好进程对资源的争用。
资源竞争出现了两个控制问题:一个是死锁 (deadlock )问题,一组进程如果都获得了部分资源,还想要得到其他进程所占有的资源,最终所有的进程将陷入死锁。另一个是饥饿(starvation )问题,这是指这样一种情况:一个进程由于其他进程总是优先于它而被无限期拖延。
操作系统需要保证诸进程能互斥地访问临界资源,既要解决饥饿问题,又要解决死锁问题。
进程的互斥(mutual exclusion )是解决进程间竞争关系( 间接制约关系) 的手段。 进程互斥指若干个进程要使用同一共享资源时,任何时刻最多允许一个进程去使用,其他要使用该资源的进程必须等待,直到占有资源的进程释放该资源。
第二种是协作关系
某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协 调各自的工作。当合作进程中的一个到达协调点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,直到其他合作进程发来协调信号或消息后方被唤醒并继续执行。这种协作进程之间相互等待对方消息或信号的协调关系称为进程同步。
进程间的协作可以是双方不知道对方名字的间接协作,例如,通过共享访问一个缓冲区进行松散式协作;也可以是双方知道对方名字,直接通过通信机制进行紧密协作。允许进程协同工作有利于共享信息、有利于加快计算速度、有利于实现模块化程序设计。
进程的同步(Synchronization)是解决进程间协作关系( 直接制约关系) 的手段。进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于另一
个协作进程的消息或信号,当一个进程没有得到来自于另一个进程的消息或信号时则需等待,直到消息或信号到达才被唤醒。
不难看出,进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,也是对进程使用资源次序上的一种协调。
进程通信的概念
下面是根据《操作系统教程》3.5 中的介绍,整理的进程通信的概念。
并发进程之间的交互必须满足两个基本要求:同步和通信。
进程竞争资源时要实施互斥,互斥是一种特殊的同步,实质上需要解决好进程同步问题,进程同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作。但是信号量与PV操作只能传递信号,没有传递数据的能力。有些情况下进程之间交换的信息量虽很少,例如,仅仅交换某个状态信息,但很多情况下进程之间需要交换大批数据,例如,传送一批信息或整个文件,这可以通过一种新的通信机制来完成,进程之间互相交换信息的工作称之为进程通信IPC (InterProcess Communication)(主要是指大量数据的交换)。进程间通信的方式很多,包括:
信号(signal )通信机制;
信号量及其原语操作(PV、读写锁、管程)控制的共享存储区(shared memory )通信机制;
管道(pipeline)提供的共享文件(shared file)通信机制;
信箱和发信/ 收信原语的消息传递(message passing )通信机制。
其中前两种通信方式由于交换的信息量少且效率低下,故称为低级通信机制,相应地可把发信号/ 收信号及PV之类操作称为低级通信原语,仅适用于集中式操作系统。消息传递机制属于高级通信机制,共享文件通信机制是消息传递机制的变种,这两种通信机制,既适用于集中式操作系统,又适用于分布式操作系统。
进程同步的方法
前面提到,进程互斥关系是一种特殊的进程同步关系,下面给出常见的进程同步的方法,实际上也可用于进程的互斥(个人理解)。
在何炎祥的《计算机操作系统》 3.2 节,将进程同步的机制与解决进程互斥方法看做是一样的,的明确指出互斥的软件解决方法为Dekker算法与Peterson算法,互斥的硬件解决方法为中断方法、以及使用机器指令的方法,后面又给出了信号量、管程、消息传递三种方法。
实际应用中,不同的系统有不同的进程同步方法,CSDN帖子http://bbs.csdn.net/topics/80156687中有一些讨论,Linux 与Windows的主要同步、通信机制如下:
Linux 下:
Linux 下常见的进程同步方法有:SysVIPC 的 sem(信号量)、file locking / record locking(通过 fcntl 设定的文件锁、记录锁)、futex(基于共享内存的快速用户态互斥锁)。针对线程(pthread)的还有 pthread_mutex 和 pthread_cond(条件变量)。

Linux 下常见的进程通信的方法有 :pipe(管道),FIFO(命名管道),socket(套接字),SysVIPC 的 shm(共享内存)、msg queue(消息队列),mmap(文件映射)。以前还有 STREAM,不过现在比较少见了(好像)。
Windows下:
在Windwos中,进程同步主要有以下几种:互斥量、信号量、事件、可等计时器等几种技术。
在Windows下,进程通信主要有以下几种:内存映射、管道、消息等,但是内存映射是最基础的,因为,其他的进程通信手段在内部都是考内存映射来完成的。
线程的同步/通信与进程的同步/通信有区别吗?
对于该问题,教材上没有明确的回答,教材上给出的一般是进程而非线程的同步、通信方式。但网络上很多说法将两者混为一谈。根据教材,以及网上的说法,个人的理解为:
同步机制:
信号量、管程、互斥是进程的同步机制,而信号量、互斥也可用于线程的同步,但管程只在进程同步中被用到;
线程的同步除了信号量、互斥外,还有临界区、事件,没有看到教材上将这两种方式作为进程的同步方式;
通信机制:
管道、FIFO、消息队列、信号量、共享内存是进程的同步机制,教材上没有线程的通信机制这样的说法,但可以肯定这几种方法是进程的通信方式,且其中的信号量既可用于进程的同步,又可用于进程的通信,在网络上还有说可以用于线程同步的。
管道与管程是不同的,管程是进程同步的方式,而管道则是进程通信的方式。
进程的同步/通信
下面是常见的线程之间的同步方式的详细介绍。
(注:下面转自网络,下面的同步、通信方式对于进程与线程分的不是很清楚,关于进程还是线程的解释见上面——线程的同步/通信与进程的同步/通信有区别吗?)
一、进程/线程间同步机制。
临界区、互斥区、事件、信号量四种方式
临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
2、互斥量:采用互斥对象机制。
只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 .互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 .
信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
PV操作及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量S是一个整数,S大于等于零时代表可供并发进程使用的资源实体数,但S小于零时则表示正在等待使用共享资源的进程数。
P操作申请资源:
(1)S减1;
(2)若S减1后仍大于等于零,则进程继续执行;
(3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转入进程调度。

V操作 释放资源:
(1)S加1;
(2)若相加结果大于零,则进程继续执行;
(3)若相加结果小于等于零,则从该信号的等待队列中唤醒一个等待进程,然后再返回原进程继续执行或转入进程调度。
4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作 .
总结:
1. 互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它。
2. 互斥量(Mutex),信号灯(Semaphore),事件(Event)都可以被跨越进程使用来进行同步数据操作,而其他的对象与数据同步操作无关,但对于进程和线程来讲,如果进程和线程在运行状态则为无信号状态,在退出后为有信号状态。所以可以使用WaitForSingleObject来等待进程和线程退出。
3. 通过互斥量可以指定资源被独占的方式使用,但如果有下面一种情况通过互斥量就无法处理,比如现在一位用户购买了一份三个并发访问许可的数据库系统,可以根据用户购买的访问许可数量来决定有多少个线程/进程能同时进行数据库操作,这时候如果利用互斥量就没有办法完成这个要求,信号灯对象可以说是一种资源计数器。
二、进程间通信方式
由于比较容易混淆,我们把进程间通信方法也列在这里做比较。
进程通信也就是所谓的IPC问题,主要是指进程间交换数据的方式。进程通信包括高级通信与低级通信,其中进程同步与互斥属于低级通信,主要用于插U农地控制信号;高级通信包括三种:共享存储系统(有的地方称作共享内存区)、消息传递系统(有的地方称作消息队列)、管道。
信号量是进程同步与互斥的常用方法,也可以作为低级的进程通信方法,用于传递控制信号。
简而言之,进程间通信方式主要包括管道、FIFO、消息队列、信号量、共享内存。
1.管道,还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式
2.消息队列,是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。需要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据!!!!
3.信号量,它与WINDOWS下的信号量是一样的,所以就不用多说了
4.共享内存,类似于WINDOWS下的DLL中的共享变量,但LINUX下的共享内存区不需要像DLL这样的东西,只要首先创建一个共享内存区,其它进程按照一定的步骤就能访问到这个共享内存区中的数据,当然可读可写
以上几种方式的比较:
1.管道:速度慢,容量有限,只有父子进程能通讯
2.FIFO:任何进程间都能通讯,但速度慢
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
4.信号量:不能传递复杂消息,只能用来同步
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存
本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:
(1)测试控制该资源的信号量;
(2)若此信号量的值为正,则允许进行使用该资源,进程将进号量减1;
(3)若此信号量为0,则该资源目前不可用,进程进入睡眠状态,直至信号量值大于0,进程被唤醒,转入步骤(1);
(4)当进程不再使用一个信号量控制的资源时,信号量值加1,如果此时有进程正在睡眠等待此信号量,则唤醒此进程。
套接字通信并不为Linux所专有,在所有提供了TCP/IP协议栈的操作系统中几乎都提供了socket,而所有这样操作系统,对套接字的编程方法几乎是完全一样的
三、进程/线程同步机制与进程间通信机制比较
很明显2者有类似,但是差别很大
同步主要是临界区、互斥、信号量、事件
进程间通信是管道、内存共享、消息队列、信号量、socket
共通之处是,信号量和消息(事件)
小结:
进程互斥、同步与通信的关系:进程竞争资源时要实施互斥,互斥是一种特殊的同步,实质上需要解决好进程同步问题,进程同步是一种进程通信,由此看来,进程互斥、同步都可以看做进程的通信;
信号量是进程同步与互斥的常用方法,也可以作为低级的进程通信方法,用于传递控制信号;
管道与管程是不同的,管程是进程同步的方式,而管道则是进程通信的方式;

J. Linux是干什么用的

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

(10)linux管程扩展阅读:

Linux操作系统的主要特性;

1、完全免费并且开放

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。

2、完全兼容POSIX1.0标准

这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。

3、多用户、多任务

Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。

阅读全文

与linux管程相关的资料

热点内容
飞夺泸定桥完整版播放 浏览:889
人形人偶电影 浏览:987
二战德军四级片 浏览:395
啄木鸟系列有哪些电影名称 浏览:817
伊波拉病毒电影空姐谁演的 浏览:648
啄木鸟在线免费观看 浏览:278
台湾早期四级老片是什么名 浏览:368
妻子慕柔雪 浏览:80
还有啥好看动作片的网址 浏览:464
aqdycc爱情电影网 浏览:793
主角林凡守护华夏的小说 浏览:173
法国四级片有哪些 浏览:589
十大露点电影 浏览:211
电影小姐精彩时间 浏览:110
现在能看的日本网站 浏览:675
激情艳遇电影完敷版 浏览:490
哪吒最新出的电影 浏览:823
一个泰国小孩走丢的电影 浏览:514
《重回寻秦记之风流少龙》 浏览:801
免费影院网页 浏览:316

友情链接