《linux系统的使用以及系统调用的开发方法os》由会员分享,可在线阅读,更多相关《linux系统的使用以及系统调用的开发方法os(41页珍藏版)》请在金锄头文库上搜索。
1、北航计算机学院 任爱华第2章 操作系统用户命令接口操作系统的发布、安装、和使用 通过编程方式使用操作系统 操作系统的系统生成 添加系统调用 编写Shell解释程序1北航计算机学院 任爱华操作系统的发布、安装、和使用概述 Linux系统发布方式 Linux的硬件要求 Linux的安装 操作系统的安装概念 Linux的使用 Shell命令 系统调用 系统管理 su的使用、添加新用户、 passwd文件2北航计算机学院 任爱华概述lLinux是由Linus Benedict Torvalds等众多软件高手共 同开发的多用户操作系统 l源代码公开、免费提供用户使用、遵守POSIX(可移植 操作系统接口
2、)标准、与UNIX兼容 lLinux的内核有两种:稳定的内核、开发的内核。 版本号:主版本号.次版本号.修正次数 如:kernel 2.2.6表示对内核2.2版本的第6次修正版。 稳定内核的次版本号为偶数,如2.2.6 而开发内核所用的则是奇数,如2.3.6 lLinux是自由软件 l用户与Linux的接口: shell命令、系统调用3北航计算机学院 任爱华软件发展的两种模式分销 公司分销 公司开发者最终 用户使用修改复制、修改 、发布 自由软件 GPL自由软件 GPL自由软件 GPL自由软件 GPL自由软件 GPL自由软件 GPL图1-9 GPL能保证自由软件无限发展公有软件私有化私有软件
3、中间环节最终用户中间环节中间环节中间环节最终用户不付版权费付版权费公有软件私有软件私有软件公有软件公有软件公有软件公有领域的软件可能转为私有General Public License通用公共许可证4北航计算机学院 任爱华Linux系统发布方式l有多种Linux系统发布方式(即有多种Linux安装方式) -Linux软件以只读光盘的形式发布。 -通过FTP下载Linux l发布Linux的不同名字和公司 -Red Hat Software发行的Red Hat Linux -由Software in the Public Interest, Inc.发行的 Debian Linux -由Work
4、Group Solutions, Inc.发行的Linux Pro -由Trans-Ameritech发行的Trans-Ameritech Linuxware -中科院软件所发行的红旗Linux -蓝点软件技术有限公司发行的蓝点Linux 5北航计算机学院 任爱华Linux的硬件要求 Linux对计算机硬件的要求并不高。由于Linux本身是Linux用户通过Internet共同开发的产物, 因此它所支持的大部分硬件都是普通用户和开发人员已经拥 有的或很容易得到的。以IBM PC及其兼容机为例主板支持ISA、VLB、EISA和PCI总线结构的系统主板CPU支持Intel Pentium、Pent
5、ium Pro、Pentium II 、 Pentium III、 PentiumIV内存 要求2MB以上显示卡 对文本方式,几乎可用所有显示卡声卡 支持几乎所有声卡网卡 支持各种通用的以太网卡以及局域网适配器6北航计算机学院 任爱华主板总线 如果说CPU是计算机的心脏,那么主板就是计算机的循环系统, 主板将CPU和计算机上所有其他设备连接起来。直接相连:CPU直接读取插在主板上的RAM中的数据。间接相连:如通过SCSI适配器读取硬盘数据。以IBM PC及其兼容机为例 ISA:Industry Standard Architecture用在x86中最老的总线 EISA: Extended IS
6、A(SCSI上流行,配置难) VL: VESA局部总线(Video Electronics Standards Association) PCI: Peripheral Component Interconnect目前用得最多 PCMCIA: Pensonal Computer Memory Card International Association多用于笔记本电脑 http:/pcmcia.sourceforge.org7操作系统的安装 计算机执行的任何程序都必须存储到内存中 CPU 只能通过内存访问程序 操作系统安装过程,实际上是把存放在光盘上的Linux执行代码 存入硬盘的过程 因为硬
7、盘是PC机的固定外部存储设备,从硬盘上加载程序到 内存很方便 另外,操作系统中的文件系统主要是靠硬盘提供物理支持, 安装操作系统到硬盘,实际上有两方面的作用: 一是在硬盘上建立文件系统 二是把操作系统的全部内容事先存放在硬盘上以便往 内存中加载操作系统核心程序时使用。 操作系统安装概念是指在硬盘上建立文件系统 当使用计算机时,从硬盘上加载操作系统到内存,然后将控 制转给操作系统内核执行。 光盘硬盘CPU内存安装加载8北航计算机学院 任爱华安装示意图(a)重新分区之前 (b) 重新分区之后 破坏性重新分区(a)原有分区 (b)压缩原有数据 (c)建立新分区 非破坏性重新分区9北航计算机学院 任爱
8、华Shell命令举例 Shell命令man联机帮助a.out, cd, cat, chmod, cp, cc, d, echo, exit, fdisk, ftp, halt, kill, ls, logout, mail, mkdir, more, mount, umount, ps, pwd, passwd, rmdir, rm, sort, su, telnet , make, useradd, userdel , vi, wc, who , | Shell 程序 见脚本文件.profile或者.bash_profile,用户在登录时 自动执行。10北航计算机学院 任爱华Shell编程举
9、例(脚本) 修改.bash_profile脚本文件 trap “$HOME/.logout” 0 建立.logout文件.logout的内容如下: rm f $HOME/*.log rm f $HOME/*.tmp echo “Byebye $LOGNAME”11北航计算机学院 任爱华脚本文件的建立和运行建立create-file文件的内容如下: cp .logout log.log cp .logout log.tmp ls l *.log ls l *.tmp键入命令:chmod u+x create-file PATH=$PATH:$HOME/. 运行create-file12北航计算机
10、学院 任爱华脚本文件的建立和运行建立cleanup文件的内容如下: #!/bin/sh #name:cleanup #this is a general cleanup script echo “starting cleanupwait” rm *.log rm *.tmp tail 40 .logout /tmp/messages mv /tmp/messages /var/tmp/messages ls /var/tmp echo “finished cleanup”键入命令:chmod u+x cleanupPATH=$PATH:$HOME/.运行 .bash_profilesh .ba
11、sh_profile运行cleanup13北航计算机学院 任爱华编程方式使用操作系统(系统调用) fork( )系统调用的使用 pipe系统调用的使用 系统调用小结 fork、exit、pipe、dup、execl open、close、read、write14北航计算机学院 任爱华fork()的使用main() int i;i=fork();if(i)printf(“parent”);elseprintf(“child”);main() int i;i=fork();if(i)printf(“parent”);elseprintf(“child”);fork()PCB1PCB115北航计算机
12、学院 任爱华系统调用应用举例 编制并发程序pipeline.c 编制管道写使用的程序father1.c作为父 进程的一部分工作 编制管道读使用的程序child1.c作为子 进程的一部分工作16北航计算机学院 任爱华fildes1pipe系统调用的使用Father1.c进程1Child1.c进程2fildes0进程的建立17北航计算机学院 任爱华进程的建立#define STD_INPUT 0 #define STD_OUTPUT 1 int fd2; main( ) static char process1=“father1“,process2=“child1“; pipe (fd); pip
13、eline(process1,process2); exit(1); 18北航计算机学院 任爱华进程的建立(续一)pipeline(process1,process2) char *process1,*process2; int i; while(i=fork()=-1); if(i) close(fd0); close(STD_OUTPUT); dup(fd1);/把1分为另一个管道写指针 close(fd1);/关闭原管道写指针 execl(process1,process1,0); printf(“-father failed.n“); 19北航计算机学院 任爱华进程的建立(续二)els
14、e close(fd1); close(STD_INPUT); dup(fd0); close(fd0); execl(process2,process2,0); printf(“-child failed.n“); exit(2); 20北航计算机学院 任爱华Father1.cmain() static char string=“Parent is using pipe write.“;int len;len=sizeof(string);write(1,string,len);printf(“parent,parent,parentnnn“);exit(0); 21北航计算机学院 任爱华c
15、hild1.cmain()char output30;read(0,output,30);printf(“-%snchild.n“,output);return(0); 22北航计算机学院 任爱华系统调用小结 close 关闭文件dup 复制打开文件的描述符exit(int status)终止进程execl 执行文件fork( ) 创建子进程open 为读/写打开文件Pipe 建立进程间的通道read 读文件write 写文件 23北航计算机学院 任爱华pipeint pipe(fildes); int fildes2 建立进程间的通道,返回两个描述: fildes0 用于读管道。 fildes1用于写管道。24北航计算机学院 任爱华closeclose(fildes); int fildes;关闭文件描述符25北航计算机学院 任爱华dupint dup(fildes);复制文件描述符,成功则返回新的文件 描述符,是最低有效文件描述符,失败 则返回-1。 int fildes; 从某个creat,open,dup,fcntl,或者pipe得到的 文件描述符。26北航计算机学院 任爱华exit void exit(status) int s