文档库 最新最全的文档下载
当前位置:文档库 › 操作系统课程设计:Linux系统管理实践与进程通信实现

操作系统课程设计:Linux系统管理实践与进程通信实现

操作系统课程设计:Linux系统管理实践与进程通信实现
操作系统课程设计:Linux系统管理实践与进程通信实现

操作系统课程设计:Linux系统管理实践与进程通信实现

操作系统课程设计——Linux系统管理实践与进程通信实现

班级网络10

学号 31006100

姓名 YHD

指导老师詹永照

二零一三年一月八号

一、设计内容

1、Linux系统的熟悉与常用操作命令的掌握。

2、Linux环境下进程通信的实现。(实现父母子女放水果吃水果的同步互斥问题,爸爸放苹果,女儿专等吃苹果,妈妈放橘子,儿子专等吃橘子,盘子即为缓冲区,大小为5。)

二、Linux环境介绍

1、Linux的由来与发展

Linux是一种可以在PC机上执行的类似UNIX的操作系统,是一个完全免费的操作系统。1991年,芬兰学生Linux Torvalds开发了这个操作系统的核心部分,因为是Linux改良的minix系统,故称之为Linux。

2、Linux的优点

(1)Linux具备UNIX系统的全部优点

Linux是一套PC版的UNIX系统,相对于Windows是一个十分稳定的系统,安全性好。

(2)良好的网络环境

Linux与UNIX一样,是以网络环境为基础的操作系统,具备完整的网络功能,提供在Internet或Intranet的邮件,FTP,www等各种服务。

(3)免费的资源

Linux免费的资源和公开的源代码方便了对操作系统的深入了解,给编程爱好者提供更大的发挥空间。

3、Linux的特点

1)全面的多任务,多用户和真正的32位操作系统

2)支持多种硬件,多种硬件平台

3)对应用程序使用的内存进行保护

4)按需取盘

5)共享内存页面

6)使用分页技术的虚拟内存

7)优秀的磁盘缓冲调度功能

8)动态链接共享库

9)支持伪终端设备

10)支持多个虚拟控制台

11)支持多种CPU

12)支持数字协处理器387的软件模拟

13)支持多种文件系统

14)支持POSIX的任务控制

15)软件移植性好

16)与其它UNIX系统的兼容性

17)强大的网络功能

三、常用命令介绍

1、目录操作

和DOS相似,Linux采用树型目录管理结构,由根目录(/)开始一层层将

子目录建下去,各子目录以 / 隔开。用户login后,工作目录的位置称为 home directory,由系统管理员设定。‘~’符号代表自己的home directory,例

如 ~/myfile 是指自己home目录下myfile这个文件。

Linux的通配符有三种:’*’和’?’用法与DOS相同,‘-‘代表区间内

的任一字符,如test[0-5]即代表test0,test1,……,test5的集合。

(1)显示目录文件 ls

执行格式: ls [-atFlgR] [name] (name可为文件或目录名称)

例: ls 显示出当前目录下的文件

ls -a 显示出包含隐藏文件的所有文件

ls -t 按照文件最后修改时间显示文件

ls -F 显示出当前目录下的文件及其类型

ls -l 显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称

ls -lg 同上

ls -R 显示出该目录及其子目录下的文件

注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输入ls --help查看,其它命令的更多用法请输入命令名 --help 查看。

(2)建新目录 mkdir

执行格式: mkdir directory-name

例: mkdir dir1 (新建一名为dir1的目录)

(3)删除目录 rmdir

执行格式: rmdir directory-name 或 rm directory-name 例:rmdir dir1 删除目录dir1,但它必须是空目录,否则无法

删除

rm -r dir1 删除目录dir1及其下所有文件及子目录

rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用

时要小心

(4)改变工作目录位置 cd

执行格式: cd [name]

例: cd 改变目录位置至用户login时的working

directory

cd dir1 改变目录位置,至dir1目录

cd ~user 改变目录位置,至用户的working directory

cd 改变目录位置,至当前目录的上层目录

cd /user 改变目录位置,至上一级目录下的user目录

cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full path) cd 回到进入当前目录前的上一个目录

(5)显示当前所在目录 pwd

执行格式: pwd

(6)查看目录大小du

执行格式: du [-s] directory

例:du dir1 显示目录dir1及其子目录容量(以kb为单位) du -s dir1 显示目录dir1的总容量

(7)显示环境变量

echo $HOME 显示家目录

echo $PATH 显示可执行文件搜索路径

env 显示所有环境变量(可能很多,最好用"env|more","env|grep PATH"等)

(8)修改环境变量,在bash下用export,如:

export PATH=$PATH:/usr/local/bin

想知道export的具体用法,可以用shell的help命令:help export 2、文件操作

(1)查看文件(可以是二进制的)内容 cat

执行格式:cat filename或more filename 或cat filename|more

例: cat file1 以连续显示方式,查看文件file1的内容

more file1

或 cat file1|more 以分页方式查看文件的内容

(2)删除文件 rm

执行格式: rm filename

例: rm file?

rm f*

(3)复制文件 cp

执行格式: cp [-r] source destination

例: cp file1 file2 将file1复制成file2

cp file1 dir1 将file1复制到目录dir1

cp /tmp/file1 将file1复制到当前目录

cp /tmp/file1 file2 将file1 复制到当前目录名为file2 cp –r dir1 dir2 (recursive copy)复制整个目录。(4)移动或更改文件、目录名称 mv

执行格式: mv source destination

例: mv file1 file2 将文件file1,更名为file2

mv file1 dir1 将文件file1,移到目录dir1下

mv dir1 dir2

(5)比较文件(可以是二进制的)或目录的内容 diff

执行格式: diff [-r] name1 name2 (name1、name2同为文件或目录) 例: diff file1 file2 比较file1与file2的不同处diff -r dir1 dir2 比较dir1与dir2的不同处

(6)文件中字符串的查找 grep

执行格式: grep string file

例: grep abc file1 查找并列出串abc所在的整行文字(7)文件或命令的路径寻找

执行格式一:whereis command 显示命令的路径

执行格式二:which command 显示路径及使用者所定义的别名

执行格式三:whatis command 显示命令的功能摘要

执行格式四:find search -path -name filename -print搜寻指定路径下某文件的路径

执行格式五:locate filename

根据系统预先生成的文件/目录数据库(/var/lib/slocate/slocate.db)查找匹配的文件/目录,查找速度很快,如果有刚进行的文件改变而系统未到执行定时更新数据库的时间,可以打入updatedb命令手动更新。

(8)建立文件或目录的链接 ln

例: ln source target1 建立source文件(已存在)的硬链接,命名为target1

ln -s source target2 建立source文件的符号链接,命名为target2

以下是几个常用命令操作的截图:

四、设计思想

当计算机中两个或多个进程在执行时需要使用公用缓冲区,并且对该缓冲区采取了互斥措施。这时如果并发执行这些进程就会造成CPU的极大浪费,这是

操作系统设计要求不允许的。而这种现象在操作系统和用户进程中大量存在。因此为了解决这一问题,提出了同步的概念,即把异步环境下的一组并发进程,因直接制约而互相发送消息、互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。

在本次设计中,爸爸与妈妈、儿子与女儿的进程操作是互斥的,但是爸爸与女儿、妈妈与儿子进程之间的操作是同步的。因此要利用进程同步的方法来实现这几者之间的操作,当然其中也包含着互斥进程,因为盘子每次只能放入或取出一个水果。

程序设计中有如下四个进程:father(),mother(),daughter(),son()。

五、数据结构

1、信号量semid_mutex作为进程的公有信号量,其初始值为1,可以实现进程间的互斥,同时可以表示当前状态下盘子里可以放几个水果,实现进程间的同步。

2、信号量semid_full1为进程father()与daughter()的私有信号量,初值为0,表示当前盘子里苹果的数目。

3、信号量semid_full2为进程mother()与son()的私有信号量,初值为0,表示当前盘子里橘子的数目。

六、设计流程

爸爸放苹果流程图:

妈妈放橘子流程图:女儿吃苹果流程图:

fathe

semid_mu

tex<=0

阻塞

唤醒

mother

semid_mu

tex<=0

阻塞

唤醒son

儿子吃橘子流程图:七、源代码

daught

semid_fu

ll1<=0

阻塞

离开临

界区

son操

semid_fu

ll2<=0

阻塞son

离开临界

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define SHMKEY 9090 /*共享存储区的键*/

#define SEMKEY_EMPTY 9091

#define SEMKEY_MUTEX 9092

#define SEMKEY_FULL1 9093

#define SEMKEY_FULL2 9094 /*信号量数组的键*//*注意:上面的键在系统中必须唯一*/

#define BUFF_LEN 5/*缓冲区可以存放10个产品*/

#define PRODUCT_LEN 1 /*每个产品是一个字符串:<=32字符*/

void set_sembuf_struct(struct sembuf *sem,int semnum, int semop,int semflg) {

/* 设置信号量结构 */

sem->sem_num=semnum;

sem->sem_op=semop;

sem->sem_flg=semflg;

}

int begin()

{

char *addr, end;

int shmid;

int semid_empty, semid_full1,semid_full2, semid_mutex;

struct sembuf sem_tmp;

/*开辟共享存储区*/

if ((shmid = shmget(SHMKEY, BUFF_LEN * PRODUCT_LEN+3, 0777|IPC_CREAT|IPC_EXCL)) == -1)

{

if (errno == EEXIST)

{

printf("The Buffer Has Existed!\n"); printf("Do You Want To Delete The Buffer(Y = yes)?\n====:");

scanf("%c", &end);

if(end == 'y' || end == 'Y')

{

/* 共享存储区、信号量并不随程序的结束而被删除,如果我们没删除的话,

可以用ipcs命令查看,用ipcrm删除

*/

/*释放缓冲区*/

shmid = shmget(SHMKEY, BUFF_LEN * PRODUCT_LEN+3, 0777);

if (shmctl(shmid,IPC_RMID,0) < 0)

perror("shmctl: falsed");

/*同时释放信号量*/

semid_mutex = semget(SEMKEY_MUTEX,1, 0777);/*获取全局信号量id*/

semid_empty = semget(SEMKEY_EMPTY,1,

0777);

semid_full1 = semget(SEMKEY_FULL1,1, 0777);

semid_full2 = semget(SEMKEY_FULL2,1, 0777);

semctl(semid_mutex,0,IPC_RMID);

semctl(semid_empty,0,IPC_RMID);

semctl(semid_full1,0,IPC_RMID);

semctl(semid_full2,0,IPC_RMID);

}

}

else

printf("Fail To Create Buffer!\n");

return -1;

}

addr = (char*)shmat(shmid, 0, 0);/*连接

缓冲区*/

memset(addr, 0, BUFF_LEN * PRODUCT_LEN+3); //初始化存储区为0

shmdt(addr); /*离开缓冲区*/

/*创建3个信号量:1个用于对缓冲区互斥,2

个用于生产者、消费者同步*/

0777|IPC_CREAT|IPC_EXCL))==-1)

{

if (errno == EEXIST)

printf("The SEMKEY_MUTEX Has Existed!\n");

else

printf("Fail To Create SEMKEY_MUTEX!\n");

return -1;

}

if((semid_empty= semget(SEMKEY_EMPTY,1, 0777|IPC_CREAT|IPC_EXCL))==-1)

{

if (errno == EEXIST)

printf("The SEMKEY_EMPTY Has Existed!\n");

else

printf("Fail To Create SEMKEY_EMPTY!\n");

return -1;

}

0777|IPC_CREAT|IPC_EXCL))==-1)

{

if (errno == EEXIST)

printf("The SEM_FULL1 Has Existed!\n");

else

printf("Fail To Create SEM_FULL1!\n");

return -1;

}

if((semid_full2= semget(SEMKEY_FULL2,1, 0777|IPC_CREAT|IPC_EXCL))==-1)

{

if (errno == EEXIST)

printf("The SEM_FULL2 Has Existed!\n");

else

printf("Fail To Create SEM_FULL2!\n");

return -1;

}

/*给信号量赋初值*/

set_sembuf_struct(&sem_tmp, 0, BUFF_LEN, 0);/*BUFF_LEN*/

semop(semid_empty, &sem_tmp,1);

set_sembuf_struct(&sem_tmp, 0, 0, 0);/*0*/

semop(semid_full1, &sem_tmp,1);

set_sembuf_struct(&sem_tmp, 0, 0, 0);/*0*/

semop(semid_full2, &sem_tmp,1);

set_sembuf_struct(&sem_tmp, 0, 1, 0);/*1*/

semop(semid_mutex, &sem_tmp,1);

return 0;

}

/*下面的P,V是对系统调用的简单封装*/

int P(int semid)

{

struct sembuf p_buf;

p_buf.sem_num = 0;

p_buf.sem_op = -1;

p_buf.sem_flg = 0;

if(semop(semid, &p_buf, 1)==-1)/*semop 参见课件ppt*/

{

perror ("p (semid) falsed");

exit (1);

}

else

return 0;

}

int V(int semid)

{

struct sembuf v_buf;/*struct 参见课件ppt*/

v_buf.sem_num = 0;

v_buf.sem_op = 1;

v_buf.sem_flg = 0;

if(semop(semid, &v_buf, 1)==-1) {

perror (" v (semid) failed");

exit (1);

}

else

return 0;

}

int father()

{

int semid_empty, semid_full1,semid_full2, semid_mutex;/*信号量集合id*/

int rc1,rc2,rc3;

semid_mutex = semget(SEMKEY_MUTEX,1, 0777);/*获取全局信号量id*/

semid_empty = semget(SEMKEY_EMPTY,1, 0777);

semid_full1 = semget(SEMKEY_FULL1,1, 0777);

semid_full2 = semget(SEMKEY_FULL2,1,

《Linux系统管理》期末考试方案#(精选.)

《Linux系统管理》期末机试方案 考试要求 考试采用知识测试+实践操作方式进行考核。在知识测试中要求在指定时间完成Linux系统管理相关知识答题。在实践操作考核中要求学生综合应用Linux系统管理知识和技能,完成考试实践操作。 考试对象 2011级信息安全技术专业 机试内容 Linux理论知识和Linux上机操作,分别占期末成绩40%和60% 一、Linux理论知识考核样题 1. crontab 后台常驻程序(daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统Manages the printing subsystem C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度(scheduling) 2.下面哪个Linux命令可以一次显示一页内容? A. pause B. cat C. more D. grep 3. 怎样了解您在当前目录下还有多大空间? A. df B. du / C. du . D. df . 4.怎样更改一个文件的权限设置? A. attrib B. chmod C. change D. file 5.假如您需要找出/etc/my.conf 文件属于哪个包(package) ,您可以执行: A. rpm -q /etc/my.conf B. rpm -requires /etc/my.conf C. rpm -qf /etc/my.conf D. rpm -q | grep /etc/my.conf

6.假如当前系统是在level 3 运行,怎样不重启系统就可转换到level 5 运行? A. Set level = 5 B. telinit 5 C. run 5 D. ALT-F7-5 7.下面哪个命令可以列出定义在以后特定时间运行一次的所有任务? A. atq B. crontab C. batch D. at 8.下面命令的作用是:set prompt="<%n\@`hostname`:`echo $cwd`\> A. 改变错误信息提示 B. 改变命令提示符 C. 改变一些终端参数 D. 改变辅助命令提示符 9.在bash中,export命令的作用是(csh中,setenv命令的作用): A. 在子shell中运行条命令 B. 使在子shell中可以使用命令历史记录 C. 为其它应用程序设置环境变量 D. 提供NFS分区给网络中的其它系统使用 10.在使用了shadow口令的系统中,/etc/passwd和/etc/shadow两个文件的权限正确的是: A. -rw-r----- , -r-------- B. -rw-r--r-- , -r--r--r-- C. -rw-r--r-- , -r-------- D. -rw-r--rw- , -r-----r-- 11.下面哪个参数可以删除一个用户并同时删除用户的主目录? A. rmuser -r B. deluser -r C. userdel -r D. usermgr -r 12.有一个备份程序mybackup,需要在周一至周五下午1点和晚上8点各运行一次,下面哪条crontab的项可以完成这项工作? A. 0 13,20 * * 1,5 mybackup B. 0 13,20 * * 1,2,3,4,5 mybackup

进程和进程间的通信

1、进程概念; 2、进程的控制: (1)生成一个进程:fork (2)进程的同步:wait waitpid (3)进程的退出:exit _exit (4)进程“脱胎换骨”:exec函数族 3、进程通信 (1)进程为什么需要通信? (2)linux下进程如何通信 ●早期的unix通信方式 无名管道;有名管道;信号 ●sysem v的通信方式:共享内存、消息队列、信号量 ●BSD的通信方式:socket 4、无名管道:适用于有血缘关系进程通信 小任务1:父进程通过无名管道向子进程发送字符串“Hello,you man!”,子进程接收到后显示出来,然后子进程退出,最后父进程退出。 (1)创建子进程:fork (2)创建管道 #include int pipe(int pipefd[2]); 参数说明(当管道创建成功后): pipefd[0]:读端的文件描述符; pipefd[1]:写端的文件描述 返回值:0表示创建成功,-1表示创建失败 (3)父亲写管道 write (4)儿子读管道 read (5)父亲等待儿子退出 wait 参考代码: #include #include #include #include #include int main() { int pid; int pipefd[2]; int ret;

char buf[]="Hello,young man!"; ret=pipe(pipefd);//创建管道(1) if(ret<0) { perror("Failed to create pipe:"); return -1; } pid=fork(); //能够把(1)语句放此注释的下一样?? if(pid<0) { perror("Failed to create child process:"); return -1; } if(pid>0) { close(pipefd[0]);//父进程中关闭无关的读端 write(pipefd[1],buf,strlen(buf)); wait(NULL); printf("Parent process exit!\n"); } else { char receive_buf[100]; int count; close(pipefd[1]);//子进程中关闭无关的写端 count=read(pipefd[0],receive_buf,100); if(count>0) { receive_buf[count]='\0'; printf("Child process receive a string:%s\n",receive_buf); } printf("Child process exit!\n"); } return 0; } 5、有名管道(fifo) (1)文件系统中可见,可以通过mkfifo 命令来创建一个有名管道 eg: mkfifo -m 0666 myfifo (2)有名管道的使用跟普通文件一样:open read write close,不用使用lseek!!!! 任务2: 进程1通过有名管道把键盘输入字符串发送给进程2,进程2收到后显

erp系统管理实验报告doc

erp系统管理实验报告 篇一:管理系统ERP实验报告 生产模拟实习 实习报告 系别管理系专业班级信管072 学生学号学生姓名指导教师 日期评阅成绩 指导老师签名:批改日期: 实习项目一系统使用学习与基础数据流程 一、时间安排 12个课时。 二、实习目的和要求 1、掌握本系统的操作方法。 2、掌握基础数据的来源以及相关获取的手段、方法。 3、了解基础数据的表现形式以及录入方式。 4、了解基础数据与业务管理之间的关系。如物料主文件与物料管理之间的关系,物料清单与物料需求计划的关系等。 5、了解基础数据的作用、意义、重要性。 6、根据系统配备的案例,建立一套基础数据进行操作练习。三、实习步骤 新建自己的实验室:

1.企业选择:选择五羊-本田摩托有限公司作为这次实习的企业。 2. 库存初始化: 将模拟日期设置为XX年12月30日, 从主界面点击“基础数据”进去点击“存储初始化”进行数据的初始化。得到如下数据: 3.根据营销部、财务部和生产部提供的数据制定XX年年度生产规划: 4.根据XX年年度生产规划制定XX年月度生产规划 实习项目二营销管理流程 一、时间安排 6个课时 二、实习目的和要求 1、掌握企业各部门的工作内容和业务流程。 2、了解企业各部门之间的相互关系。 3、理解企业各个部门管理的作用、意义、重要性。 4、根据系统配备的案例,建立一套业务数据进行操作练习。 5、通过在线帮助,学习相关的管理理论知识。三、实习内容: ①、制定营销计划,负责市场调研;②、建立新老客户详细档案;③、向客户报价,录入客户订单; ④、库存,若货源充裕,则填写交运单交客户,仓库发货;若货源不足则生成定制单交生产部安排生产;

操作系统进程通信练习及答案

进程同步与通信练习题 (一)单项选择题 1?临界区是指()。A?并发进程中用于实现进程互斥的程序段 B ?并发进程中用于实现进程同步的程序段C?并发进程中用户实现进程通信的程序段D?并发进程中与共享变量有关的程序段 2?相关临界区是指()°A. —个独占资源B ?并发进程中与共享变量有关的程序段 c ?一 个共享资源 D ?并发进程中涉及相同变量的那些程序段 3?管理若干进程共享某一资源的相关临界区应满足三个要求,其中()不考虑。A 一个进 程可以抢占己分配给另一进程的资源B?任何进程不应该无限地逗留在它的临界区中 c ? 一次最多让一个进程在临界区执行 D .不能强迫一个进程无限地等待进入它的临界区 4、()是只能由P和v操作所改变的整型变量。A共享变量B ?锁c整型信号量 D ?记录型信号量 5.对于整型信号量,在执行一次P操作时,信号量的值应()。 A .不变B.加1 C减 I D .减指定数值 6?在执行v操作时,当信号量的值()时,应释放一个等待该信号量的进程。A>0 B.<0 c.>=0 D.<=0 操作必须在屏蔽中断下执行,这种不可变中断的过程称为()。A初始化程序B ?原语c ?子 程序 D 控制模块 &进程间的互斥与同步分别表示了各进程间的()。A ?竞争与协作 B .相互独立与相 互制约 c .不同状态 D .动态性与并发性 9并发进程在访问共享资源时的基本关系为()。A ?相互独立与有交往的 B ?互斥与同步 c 并行执行与资源共享 D 信息传递与信息缓冲 10在进程通信中,()常用信件交换信息。 A 低级通信 B 高级通信 c 消息通信 D 管道通信II?在间接通信时,用send(N , M)原语发送信件,其中N表示()。A.发送信件的进程名 B 接收信件的进程名 C 信箱名 D 信件内容 12?下列对线程的描述中,()是错误的。A不同的线程可执行相同的程序 B ?线程是资 源分配单位 c 线程是调度和执行单位 D 同一进程中的线程可共享该进程的主存空间 13?实现进程互斥时,用()对应,对同一个信号量调用Pv操作实现互斥。A ? 一个信号量与一个临界区 B 一个信号量与—个相关临界区 c 一个信号量与一组相关临界区 D 一个信号量与一个消息14实现进程同步时,每一个消息与一个信号量对应,进程()可把不同的消息发送出去。 A.在同一信号量上调用P操作B在不同信号量上调用P操作c ?在同一信号量上调用v 操作D ?在不同信号量上调用v操作 (二)填空题 1 目前使用的计算机的基本特点是处理器___________ 执行指令。2进程的______ 是指进程在顺 序处理器上的执行是按顺序进行的。 3 当一个进程独占处理器顺序执行时,具有_______________ 和_____ 两个特性。 4 进程的封闭性是指进程的执行结果只取决于___________ ,不受外界影响。5进程的可再现性是指当进程再次重复执行时,必定获得__________ 的结果。 6 一个进程的工 作在没有全部完成之前,另一个进程就可以开始工作,则称这些进程为________ . 7 若系统中 存在一组可同时执行的进程,则就说该组进程具有 _________ 。8 如果—个进程的执行不影 响其他进程的执行,且与其他进程的进展情况无关,则说这些并发进程相互之间是______ 的。9如果一个进程的执行依赖其他进程的进展情况,则说这些并发进程相互之间是 __________ 10 有交往的并发进程一定_________ 某些资源。11 有交往的进程执行时可能产生与时间有 关的错误,造成不正确的因素与进程 _________ 、 _____ 和外界的影响有关。12 .对 _______ 的使用不受限制,这是使有交往的并发进程执行时出现与时间有关的错误的根本原因。13 .临界区是指并发进程中与 _____________ 有关的程序段。14 ._______ 是指并发进程中涉及到相同变量

linux操作系统基本管理系统

unix/linux操作系统基本管理 以下命令的样例在REDHAT AS4上验证通过,在其他版本的操作系统上可能存在一些细微差别,请参阅相关系统手册。 几个常用操作系统命令用法。注意:UNIX/LINUX下命令关键字是区分大小写的,以下介绍的仅仅是这几个命令的一些基本用法,每个命令都还有多个其他用法。关于这些命令的其他用法和更多unix/linux命令的用法请参阅相关系统手册,或在命令行下输入:man commnad获取。 1、ls: 显示指定目录下内容 -a 显示所有档案及目录包括文件或目录名称开头为"."的隐藏文件或目录; -l 除名称外,亦将文件或目录型态、权限、拥有者、大小等信息详细列出; 例如: [oracle@urp ~]$ ls -al total 108 drwxrwxrwx 5 oracle dba 4096 Dec 23 2007 . drwxrwxrwx 10 root root 4096 Jan 13 13:31 .. drwxr-xr-x 6 oracle dba 4096 Apr 17 2008 ... -rwxrwxrwx 1 oracle dba 1749 Feb 20 18:26 .bash_history -rwxrwxrwx 1 oracle dba 24 Nov 19 2007 .bash_logout -rwxrwxrwx 1 oracle dba 191 Nov 19 2007 .bash_profile -rwxrwxrwx 1 oracle dba 124 Nov 19 2007 .bashrc -rwxrwxrwx 1 oracle dba 5619 Nov 19 2007 .canna

Windows进程间各种通信方式浅谈

Windows进程间各种通信方式浅谈 1、Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。 多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API) 提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。 正因为使用Win32 API进行进程通信方式有多种,如何选择恰当的通信方式就成为应用开发中的一个重要问题, 下面本文将对Win32中进程通信的几种方法加以分析和比较。 2、进程通信方法 2.1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。 Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。 应用程序有三种方法来使多个进程共享一个文件映射对象。 (1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。 (2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。 (3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、

进程间通信的四种方式

一、剪贴板 1、基础知识 剪贴板实际上是系统维护管理的一块内存区域,当在一个进程中复制数据时,是将这个数据放到该块内存区域中,当在另一个进程中粘贴数据时,是从该内存区域中取出数据。 2、函数说明: (1)、BOOL OpenClipboard( ) CWnd类的OpenClipboard函数用于打开剪贴板。若打开剪贴板成功,则返回非0值。若其他程序或当前窗口已经打开了剪贴板,则该函数返回0值,表示打开失败。若某个程序已经打开了剪贴板,则其他应用程序将不能修改剪贴板,直到前者调用了CloseClipboard函数。 (2)、BOOL EmptyClipboard(void) EmptyClipboard函数将清空剪贴板,并释放剪贴板中数据的句柄,然后将剪贴板的所有权分配给当前打开剪贴板的窗口。 (3)、HANDLE SetClipboardData(UINT uFormat, HANDLE hMem) SetClipboardData函数是以指定的剪贴板格式向剪贴板上放置数据。uFormat指定剪贴板格式,这个格式可以是已注册的格式,或是任一种标准的剪贴板格式。CF_TEXT表示文本格式,表示每行数据以回车换行(0x0a0x0d)终止,空字符作为数据的结尾。hMem指定具有指定格式的数据的句柄。hMem参数可以是NULL,指示采用延迟提交技术,则该程序必须处理WM_RENDERFORMA T和WM_RENDERALLFORMATS消息。应用程序在调用SetClipboardData函数之后,就拥有了hMem参数所标识的数据对象,该应用程序可以读取该数据对象,但在应用程序调用CloseClipboard函数之前,它不能释放该对象的句柄,或者锁定这个句柄。若hMem标识了一个内存对象,那么这个对象必须是利用GMEM_MOVEABLE标志调用GlobalAlloc函数为其分配内存。 注意:调用SetClipboardData函数的程序必须是剪贴板的拥有者,且在这之前已经打开了剪贴板。 延迟提交技术:当一个提供数据的进程创建了剪贴板数据之后,直到其他进程获取剪贴板数据之前,这些数据都要占据内存空间。若在剪贴板上放置的数据过大,就会浪费内存空间,降低对资源的利用率。为了避免这种浪费,就可以采用延迟提交计数,也就是由数据提供进程先提供一个指定格式的空剪贴板数据块,即把SetClipboardData函数的hMem参数设置为NULL。当需要获取数据的进程想要从剪贴板上得到数据时,操作系统会向数据提供进程发送WM_RENDERFORMA T消息,而数据提供进程可以响应这个消息,并在此消息的响应函数中,再一次调用SetClipboardData函数,将实际的数据放到剪贴板上。当再次调用SetClipboardData函数时,就不再需要调用OpenClipboard函数,也不再需要调用EmptyClipboard函数。也就是说,为了提高资源利用率,避免浪费内存空间,可以采用延迟提交技术。第一次调用SetClipboardData函数时,将其hMem参数设置为NULL,在剪贴板上以指定的剪贴板格式放置一个空剪贴板数据块。然后直到有其他进程需要数据或自身进程需要终止运行时再次调用SetClipboardData函数,这时才真正提交数据。 (4)、HGLOBAL GlobalAlloc( UINT uFlags,SIZE_T dwBytes); GlobalAlloc函数从堆上分配指定数目的字节。uFlags是一个标记,用来指定分配内存的方式,uFlags为0,则该标记就是默认的GMEM_FIXED。dwBytes指定分配的字节数。

实验一-系统管理及基础数据设置

企业资源计划(ERP)实验指导书 2011版 唐中林 西南石油大学 经济管理学院

实验一系统管理与基础数据设置 本实验通过系统管理,创建公司数据库账套,录入用户信息并授予用户权限,即完成数字化企业搭建的第一步——账套管理、用户管理及权限管理;通过基础数据设置,设置启用系统的公用参数,录入公司的公共基础数据及各业务模块的基础数据,导入公司期初数据(未结业务单据),即完成数字化企业搭建的第二步——系统初始化和基础资料设置。本次实验内容总体上属于ERP系统初始化阶段。 本次实验的实验目的: ●了解数字化企业构建过程 ●了解ERP系统的集成思想和方法 ●理解系统管理的主要目的 ●理解基础信息含义与作用 ●理解基础信息设置的主要目的 1.1 系统管理 (注:由于金蝶K3 V10.3SP1基于C/S架构,本节内容通常由系统管理员(教师)在服务器端完成,学生可通过阅读或者特别申请学习本节内容。建议同学们直接跳过本节内容,从 1.2节开始实验。——tangzlupdated) 一、账套管理 [实验要求] 根据模拟案例数据,新建绿色原野公司的账套,并启用该账套。 [实验资料] 详见3.3节。 [实验环境] 时点:2011-03-30(注:该时间随各专业年级ERP课程上课时间段进行动态调整,通常设置为开始上课时的日期。——tangzlupdated) 操作人员:administrator(系统管理员的内设帐号,安装系统时默认的系统管理员)[实验步骤] 1、点击[开始]→[程序]→[金蝶K/3]→[中间层服务部件]→[账套管理],进入账套管理菜单选择界面。 图1.1-1 选择账套管理菜单 2、在登录界面,不用输入密码,单击“确定”按钮进入账套管理。 图1.1-2 账套管理登录界面

操作系统之进程(生产者_消费者)实验报告

操作系统实验报告 ——生产者和消费者问题 姓名:学号:班级: 一、实验内容 1、模拟操作系统中进程同步和互斥; 2、实现生产者和消费者问题的算法实现; 二、实验目的 1、熟悉临界资源、信号量及PV操作的定义与物理意义; 2、了解进程通信的方法; 3、掌握进程互斥与进程同步的相关知识; 4、掌握用信号量机制解决进程之间的同步与互斥问题; 5、实现生产者-消费者问题,深刻理解进程同步问题; 三、实验题目 在Windows操作系统下用C语言实现经典同步问题:生产者—消费者,具体要求如下: (1)一个大小为10的缓冲区,初始状态为空。 (2)2个生产者,随机等待一段时间,往缓冲区中添加数据,若 缓冲区已满,等待消费者取走数据之后再添加,重复10次。 (3)2个消费者,随机等待一段时间,从缓冲区中读取数据,若 缓冲区为空,等待生产者添加数据之后再读取,重复10次。 四、思想 本实验的主要目的是模拟操作系统中进程同步和互斥。在系统进程并发执行异步推进的过程中,由于资源共享和进程间合作而造成进程间相互制约。进程间的相互制约有两种不同的方式。 (1)间接制约。这是由于多个进程共享同一资源(如CPU、共享

输入/输出设备)而引起的,即共享资源的多个进程因系统协调使用资源而相互制约。 (2)直接制约。只是由于进程合作中各个进程为完成同一任务而造成的,即并发进程各自的执行结果互为对方的执行条件,从而限制各个进程的执行速度。 生产者和消费者是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进行操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是否为空,如果为空,则必须等待生产者进程写入数据才能读取数据。 在本实验中,进程之间要进行通信来操作同一缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制在本实验中,进程之间要进行通信来操作同一缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。 目前,计算机系统中用得比较普遍的高级通信机制可分为3大类:共享存储器系统、消息传递系统及管道通信系统。 ?共享存储器系统 共享存储器系统为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。

Linux系统管理习题(附答案)

系统管理习题一 1. 使用编辑文本只读时,强制存盘并退出的命令是?(单选题) A :w! B ! C ! D ! 2. 使用什么命令把两个文件的合并成一个文件?(单选题) A B C D 3 以下哪一个命令只查找源代码、二进制文件和帮助文件,而不是所以类型的文件?此命令查找的目录是由环境变量$指定的。(单选题) A B C D 4. 使用什么命令进行查询,并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和 * ?(单选题) A B C D 5. 使用什么命令把打印任务放到打印队列中去打印。(单选题) A B C D 6、使用什么命令自动卸载已安装的老版本软件包并安装新软件包,即使不存在老版本也会安装新软件包。(单选题) A:B :C: D: 7、如果文件的属性为 -s -,则s代表?(单选题) A:B: C: D :

8、当一个文件属性为,则这个文件的权限是什么样的?(多选题)A: 任何用户皆可读取、可写入B :可以删除该目录的文件 C:给普通用户以文件所有者的特权D :文件拥有者有权删除该目录的文件 9:什么命令用来查看硬盘被占用了多少空间和剩余多少空间?(单选题) A : B : C : D : 10: 使用者的帐号、密码与群组的名称文件放在哪些文件里? (多选题) A:B: C: D: 11、暂停某用户帐号可以使用如下哪些方法?(多选题) A.把文件中该用户信息字段前加# B.-1[ 用户名] C. 将该用户信息字段改成 D. - u[用户名] 12、什么命令可以查看曾经登录到此系统的用户清单?(*单选题) 13、以下哪一个内核版本属于测试版本?(单选题) A. 2. 0. 0 B.1.2.25 C 2.3.4 D 3.0.13

管理信息系统实验及答案(1)复习进程

第一章学校教务管理信息系统项目规划 一、开发背景介绍 信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。这对于正在迅速发展的各大高校而言,同样有着重要意义。现如今高校为适应社会的需求以及自身办学的需要,扩建、扩招已在寻常不过。自然就会有更多的学生信息需要处理。如果只靠人力来完成,必然是一项非常繁琐、复杂的工作,而且还会出现很多意想不到的错误,这不仅会给教学及管理带来了很大的不便,也不益于学校全面快速发展的需要。在高校中,教务管理工作具有举足轻重的地位,教学质量直接取决十教务管理水平。现如今教务管理信息系统的开发与实施可谓日新月异。在数字校园理论逐步应用的过程中,各高校一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。教务管理系统是一个庞大而复杂的系统,它包括对学生信息的注册、修改,学生选课及课程管理和学生的四六级考试及计算机等级考试的管理;对教师课程的管理以及对选课学生评分的管理;和管理员对教师、各类考试的综合管理等主要的功能。教务管理系统运行的状况将直接影响到学校里的主要工作,一旦此系统出错,不仅学校的教学进度安排会受到一定程度的影响,而且还会危及到每一个在校学生的切身利益。所以设计一个功能相对完整、操作简单以及界面友好的教务管理系统变得非常重要。为了提高教务管理的工作效率和服务质量,降低出错率,精简人力、物力的投入,各个高校均建立了自己的教务管理信息系统,为学校的动态管理和分析决策带来了极大的便利。现在的学校的教务管理也逐步从手工转到计算机自动化信息处理阶段。通过这个系统,用户可以方便的对教师信息以及学生信息和学生成绩资料进行添加、修改和删除操作,还可以对学生资料和成绩进行查询操作。除此之外,对用户的添加和删除操作也很方便。教务管理系统是典型的信息管理系统(MIS),它能够实现整体规划教学资源(学生,教师,教室),评估教学质量,制定教学计划,检查教学进度,给学校的教务人员管理教务工作提供了极大的方便。

第二章-操作系统进程(练习题答案)

第二章进程管理 1.操作系统主要是对计算机系统全部 (1) 进行管理,以方便用户、提高计算机使 用效率的一种系统软件。它的主要功能有:处理机管理、存储管理、文件管理、 (2) 管 理和设备管理等。Windows和Unix是最常用的两类操作系统。前者是一个具有图形界面的 窗口式的 (3) 系统软件,后者是一个基本上采用 (4) 语言编制而成的 的系统软件。在 (5) 操作系统控制下,计算机能及时处理由过程控制反馈的信息 并作出响应。 供选答案: (1): A. 应用软件 B. 系统软硬件 C. 资源 D. 设备 (2): A. 数据 B. 作业 C. 中断 D. I/O (3): A. 分时 B. 多任务 C. 多用户 D. 实时 (4): A. PASCAL B. 宏 C. 汇编 D. C (5): A. 网络 B. 分时 C. 批处理 D. 实时 答案:CBBDD 2.操作系统是对计算机资源进行的 (1) 系统软件,是 (2) 的接口。 在处理机管理中,进程是一个重要的概念,它由程序块、 (3) 和数据块三部 分组成,它有3种基本状态,不可能发生的状态转换是 (4) 。 虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 (5) 作为它的一个主要组成部分。 供选答案: (1): A. 输入和输出 B. 键盘操作 C. 管理和控制 D. 汇编和执行 (2): A. 软件和硬件 B. 主机和外设 C. 高级语言和机器语言 D. 用户和计算机 (3): A. 进程控制块 B. 作业控制块 C. 文件控制块 D. 设备控制块 (4): A. 运行态转换为就绪态 B. 就绪态转换为运行态 C. 运行态转换为等待态 D. 等待态转换为运行态 (5): A. 软盘 B. 硬盘 C. CDROM D. 寄存器 答案:CDADB 3.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D。 A. Spodling技术 B. 虚拟存储技术 C. 缓冲技术 D. 多道程序设计技术 4.分时系统追求的目标是 C。 A. 高吞吐率 B. 充分利用内存 C. 快速响应 D. 减少系统开销 5.引入多道程序的目的是 D。

linux系统管理考试(标准答案)

linux系统管理考试(答案)

————————————————————————————————作者:————————————————————————————————日期:

《Linux系统管理》单科结业测试 考试说明: 1. 考试形式为闭卷,考试时间为90分钟。 2. 考试内容包括30道选择题(60分)和1道机试题(40分),满分合计100分。 3. 请将选择题的答案写在答题纸上,机试题以电子文档的形式提交实验报告。 一、选择题(共30题,每题2分) 1.在RHEL5系统中,Linux超级管理员用户root的宿主目录位于()。(选择一项) a) /boot b) /root c) /home/root d) /workspace 2.在RHEL5系统中,第一块IDE硬盘中的第2个逻辑分区应该表示为()。(选择一项) a) /dev/hda2 b) /dev/sda2 c) /dev/hda6 d) /dev/sda6 3.在RHEL5系统中,使用带()选型的tar命令,可用于解压释放“.tar.bz2”格式的归 档压缩包文件。(选择一项) a) zcf b) zxf c) jcf d) jxf 4.在RHEL5系统中,通过使用Shell的()功能,可以将命令的执行结果保存到指定 的文本文件中。(选择一项) a) 别名 b) 管道 c) 重定向输出 d) 自动补齐

5.在VI编辑器的末行模式中,若要查找整个文档中所有的“old”字符串并将其替换为 “new”,可以执行()命令。(选择一项) a) :s/old/new b) :s/old/new/g c) :% s/old/new d) :% s/old/new/g 6.在RHEL5系统中,用户jerry是jerry组的成员,在/tmp下执行“ls -l myfile”命令显示 的信息为“-rw-r-x--- 1 root jerry 7 07-04 20:40 myfile”,则jerry用户对文件myfile的权限是()。(选择两项) a) 可以查看文件内容 b) 可以修改文件内容 c) 可以执行文件 d) 可以删除文件 7.在RHEL5系统中,为执行程序文件设置()权限以后,其他用户在执行该程序时, 将会获得与该文件属主帐号相同的身份。(选择一项) a) Set UID b) Set GID c) 粘滞位 d) 可执行 8.在RHEL5系统中,执行带()选项的fdisk命令可以查看当前主机中磁盘的分区表 信息。(选择一项) a) -l b) -n c) -p d) -w 9.在RHEL5系统中,执行()命令可以将分区“/dev/sdb2”格式化为Swap类型的交换 文件系统。(选择一项) a) mkfs -t swap /dev/sdb2 b) mkswap /dev/sdb2 c) swapon /dev/sdb2 d) format /dev/sdb2:swap 10.在RHEL5系统的引导过程中,()脚本用于完成设置网络、主机名、加载文件系统等 一系列的初始化工作。(选择一项)

进程间通信实验报告

进程间通信实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。 实验内容与分析设计: (1)消息的创建,发送和接收。 ①使用系统调用msgget (), msgsnd (), msgrev (), 及msgctl () 编制一长度为1k 的消息的发送和接收程序。 ②观察上面的程序,说明控制消息队列系统调用msgctl () 在此起什么作用? (2)共享存储区的创建、附接和段接。 使用系统调用shmget(),shmat(),sgmdt(),shmctl(),编制一个与上述功能相同的程序。(3)比较上述(1),(2)两种消息通信机制中数据传输的时间。 实验步骤与调试过程: 1.消息的创建,发送和接收: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)在SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER 。SERVER每接收到一个消息后显示一句“(server)received”。 (3)CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,既是 SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”。 (4)父进程在 SERVER和 CLIENT均退出后结束。 2.共享存储区的创建,附接和断接: (1)先后通过fork( )两个子进程,SERVER和CLIENT进行通信。 (2)SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1。作为数据空的标志.等待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER.SERVER 每接收到一次数据后显示”(server)received”. (3)CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可发送请求. CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后, CLIENT退出. CLIENT每发送一次数据后显示”(client)sent”. (4)父进程在SERVER和CLIENT均退出后结束。 实验结果: 1.消息的创建,发送和接收: 由 Client 发送两条消息,然后Server接收一条消息。此后Client Server交替发送和接收消息。最后一次接收两条消息。Client 和Server 分别发送和接收了10条消息。message 的传送和控制并不保证完全同步,当一个程序不再激活状态的时候,它完全可能继续睡眠,造成上面现象。在多次send message 后才 receive message.这一点有助于理解消息转送的实现机理。

操作系统实验进程的通信

(操作系统原理和linux操作系统相结合的实验) 实验二进程的通信 一实验目的 1 学会使用vi编辑器编辑C语言程序 2 学会Linux环境下gcc的使用 3 学会调试工具GDB的使用 二实验原理 1 利用linux提供的进程通信的系统调用设计进程通信程序,加深对进程通信概念的理解。 2 体会进程通信的方法和效果。 三实验环境 PC机1台,Windows操作系统和其上的虚拟Linux操作系统。 四实验步骤 1.管道通信 (1)编写一个程序。父进程创建一个子进程和一个无名管道fd,由子进程向管道写入信息“This is a message”,然后终止执行;父进程接收到子进程终止信号后从管道中读出并显示信息后结束。 #include #include main() { int p1,fd[2]; char outpipe[50]; //定义读缓冲区 char inpipe[50]="This is a message!"; //定义写缓冲区 pipe(fd); //创建无名管道fd while((p1=fork())==-1); if (p1==0) //子进程返回 { write(fd[1],inpipe,50); //写信息到管道 exit(0); } else //父进程返回

{ wait(0); //等待子进程终止 read(fd[0],outpipe,50); //从管道读信息到读缓冲区 printf("%s\n",outpipe); //显示读到的信息 exit(0); } } (2)父进程创建两个子进程,父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现通信效果。(源程序pipe_1.c) #include main() { int I,r,j,k,l,p1,p2,fd[2]; char buf[50],s[50]; pipe(fd); while((p1=fork())==-1); if(p1==0) { lockf(fd[1],1,0); sprintf(buf,"Child process p1 is sending message!\n"); printf("Child process p1!\n"); write(fd[1],buf,50); lockf(fd[1],0,0); sleep(5); j=getpid(); k=getppid(); printf("p1 %d is weakup.My parent process id is %d.\n",j,k); exit(0); } else { while((p2=fork())==-1); if(p2==0) { lockf(fd[1],1,0); sprintf(buf,"Child process p2 is sending message!\n");

《Linux系统管理》期末综合试题答案

Linux 期末复习试题 一、选择题 (每小题2分,共50分) 1.在创建Linux分区时,一定要创建( D )两个分区 A. FAT/NTFS B. FAT/SWAP C. NTFS/SWAP D.SWAP/根分区 2.在Red Hat Linux 9中,系统默认的( A )用户对整个系统拥有完全的控制权。 A. root B. guest C. administrator D.supervistor. 3. 当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B ) A. NID B. PID C. UID D. CID 4. 下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 5. 哪个目录存放用户密码信息( B ) A. /boot B. /etc C. /var D. /dev 6. 默认情况下管理员创建了一个用户,就会在( B )目录下创建一个用户主目录。

A. /usr B. /home C. /root D. /etc 7. . 当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于( D )目录。 A. /home B. /bin C. /etc D. /dev 8. 如果要列出一个目录下的所有文件需要使用命令行( C )。 A. ls –l B. ls C. ls –a D. ls –d 9. 哪个命令可以将普通用户转换成超级用户( D ) A. super B. passwd C. tar D. su 10. 除非特别指定,cp假定要拷贝的文件在下面哪个目录下( D ) A. 用户目录 B. home目录 C. root目录 D. 当前目录 11. 在vi编辑器里,命令"dd"用来删除当前的( A ) A. 行 B. 变量 C. 字 D. 字符 12. 当运行在多用户模式下时,用Ctrl+ALT+F*可以切换多少虚拟用户终端( B )

进程间通信方式比较

进程间的通信方式: 1.管道(pipe)及有名管道(named pipe): 管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 2.信号(signal): 信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致得。 3.消息队列(message queue): 消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。 消息缓冲通信技术是由Hansen首先提出的,其基本思想是:根据”生产者-消费者”原理,利用内存中公用消息缓冲区实现进程之间的信息交换. 内存中开辟了若干消息缓冲区,用以存放消息.每当一个进程向另一个进程发送消息时,便申请一个消息缓冲区,并把已准备好的消息送到缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中,最后通知接收进程.接收进程收到发送里程发来的通知后,从本进程的消息队列中摘下一消息缓冲区,取出所需的信息,然后把消息缓冲区不定期给系统.系统负责管理公用消息缓冲区以及消息的传递. 一个进程可以给若干个进程发送消息,反之,一个进程可以接收不同进程发来的消息.显然,进程中关于消息队列的操作是临界区.当发送进程正往接收进程的消息队列中添加一条消息时,接收进程不能同时从该消息队列中到出消息:反之也一样. 消息缓冲区通信机制包含以下列内容:

(1) 消息缓冲区,这是一个由以下几项组成的数据结构: 1、消息长度 2、消息正文 3、发送者 4、消息队列指针 (2)消息队列首指针m-q,一般保存在PCB中。 (1)互斥信号量m-mutex,初值为1,用于互斥访问消息队列,在PCB中设置。 (2)同步信号量m-syn,初值为0,用于消息计数,在PCB中设置。(3)发送消息原语send (4)接收消息原语receive(a) 4.共享内存(shared memory): 可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。 这种通信模式需要解决两个问题:第一个问题是怎样提供共享内存;第二个是公共内存的互斥关系则是程序开发人员的责任。 5.信号量(semaphore): 主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。 6.套接字(socket); 这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。 https://www.wendangku.net/doc/6a10928039.html,/eroswang/archive/2007/09/04/1772350.aspx linux下的进程间通信-详解

相关文档