OS9(上机-接口)教学课件_第1页
OS9(上机-接口)教学课件_第2页
OS9(上机-接口)教学课件_第3页
OS9(上机-接口)教学课件_第4页
OS9(上机-接口)教学课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OS9(上机-接口)26、我们像鹰一样,生来就是自由的,但是为了生存,我们不得不为自己编织一个笼子,然后把自己关在里面。——博莱索27、法律如果不讲道理,即使延续时间再长,也还是没有制约力的。——爱·科克28、好法律是由坏风俗创造出来的。——马克罗维乌斯29、在一切能够接受法律支配的人类的状态中,哪里没有法律,那里就没有自由。——洛克30、风俗可以造就法律,也可以废除法律。——塞·约翰逊OS9(上机-接口)OS9(上机-接口)26、我们像鹰一样,生来就是自由的,但是为了生存,我们不得不为自己编织一个笼子,然后把自己关在里面。——博莱索27、法律如果不讲道理,即使延续时间再长,也还是没有制约力的。——爱·科克28、好法律是由坏风俗创造出来的。——马克罗维乌斯29、在一切能够接受法律支配的人类的状态中,哪里没有法律,那里就没有自由。——洛克30、风俗可以造就法律,也可以废除法律。——塞·约翰逊上机安排(3-8周,共6次)3、5、7周周五6-7节: 计科0901-03 北八机房 计科0904-05 北二机房4、6、8周周五6-7节: 计科0901-03 北二机房 计科0904-05 北八机房上机内容:1.linux基本使用2.linux下进程相关程序设计3.windows下进程相关程序设计4.银行家算法5.存储管理,各种调度算法比较6.文件系统上机内容将在----作业管理中布置GPL(GeneralpublicLicense)软件--通用公共许可软件。此类软件的开发不是为了经济目的,而是不断开发并传播新的软件,并让每个人都能获得、拥有。该类软件遵循一定的规则: 1.

传播者不能限制购买软件的用户自由权。即如果用户买了一套GPL软件,就可以免费复制和传播或自己出售。 2.

传播者必须清楚告诉用户该软件属于GPL软件。 3.

传播者必须免费提供软件的完整源代码。这样为用户提供了修改的条件。允许个人或组织为盈利而传播,获得利润。但不允许剥夺购买者的传播能力。POSIXUNIX发展过程中,出现了许多变种(BSD,SystemV等)。为统一标准,电气和电子工程师协会(IEEE)开发了POSIX标准(PortableOperatingSystemInterfaceforUNIX):这个标准定义了应用程序和操作系统之间的一个接口。目的是为了提高UNIX环境下应用程序的可移植性。从理论上说,POSIX标准代码很容易移植到任何遵守POSIX的操作系统中。这样的操作系统包括大部分版本的UNIX

今天,POSIX并不局限于UNIXLinux与GNU计划LinusTorvaldsFreesoftwareFSF(Freesoftwarefoundation)自由软件基金会

GNU计划GPL(GeneralPublicLicense)通用公共许可证OpenSourceGNU(GNU’sNOTUnix)TheGNUProjectwaslaunchedin1984todevelopacompleteUnix-likeoperatingsystemwhichisfreesoftware:theGNUsystem.(GNUisarecursiveacronymfor"GNU'sNotUnix";itispronounced"guh-NEW".)VariantsoftheGNUoperatingsystem,whichusethekernelLinux,arenowwidelyused;thoughthesesystemsareoftenreferredtoas"Linux",theyaremoreaccuratelycalledGNU/Linuxsystems.FSFistheprincipalorganizationalsponsoroftheGNUProject.二、关于linux的一些名词 由一些团体或企业开发,主要进行集成工作:将Linux内核与一些支持Linux的工具和应用程序集成,制成安装光盘发布。 较知名的有:SlackWare、RedHat、Debain、Mandrake、SuSE、Xlinux、TurboLinux、BluePoint、RedFlag、Xterm TurboLinux是一家美国公司建立的发行版,早期其致力于Linux的国际化工作,它的中文版,是最早的成熟中文Linux发行版.

RedHatLinux是最成熟的一种Linux发行版,其无论在销售还是装机量上都是市场上的老大。 Redhat自9.0以后,不再发布桌面版,而是与开源社区合作,于是就有了Fedoracore这个Linux发行版。Fedora可以说是Redhat桌面版本的延续,只不过是与开源社区合作1、Linux的发行版本2、发行版版本号和内核版本如:RedHat9是发行版的版本号,不同的发行商不同。而Linux2.4则是指Linux内核的版本。

Linux核心是由linus维护的,它的版本号一般由二到三个部分组成,例如机房安装的是2.4.20:

1)第一个2是主版本号,一般在一个时期内比较稳定;

2)第二个2是次版本号,如果是偶数,代表是正式版,如果是奇数,代表是开发过程中的测试版,如在2.4正式出来时,2.3.x就是在开发者间使用的测试版的版本号;

3)最后一个20是修改号,如2.4.20就是对2.4.19做了一些小的修改而来。

这种特殊的版本命名法是为了便于在Internet上共同开发而制定的。3、Xwindow在操作系统之上运行GUI而不是将它集成进操作系统中!这样做可以允许用户在不需要时放弃GUI.如:计算机主要做为一个Web服务器,没必要将系统资源浪费在并不实用的GUI上。Linux都集成了Xfree86,窗口化的GUI。4、VC——Virtualconsole虚拟控制台Linux让用户拥有几个活动的虚拟控制台,这几个虚拟控制台共享物理的控制台,并通过功能键进行切换(CTRL+Alt+F1/F2…/F6,CTRL+Alt+F7回到X-window状态)5、linux是真正的多用户多任务Windows2000以前的系统都不是多用户os,带sp2补丁的xp和windows2003才支持多用户的功能6、Linux的徽标——tux(一只企鹅)体态丰盈而容易满足的水禽可靠、可扩展、协作开发的操作系统的化身。 LarryEwing应Linus之邀设计完成的三、Linux的文件系统结构 Linux的文件系统和Windows文件系统有很大不同:linux只有一个文件树,整个文件系统是以一个树根“/”为起点的,所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等,这和以“驱动器盘符”为基础的Windows系统大不相同.Linux的文件结构体现了这个操作系统简洁清析的设计,通常我们能够接触到的linux发行版本的根目录大都是以下结构: /bin/etc

/lost+found

/sbin

/var

/boot

/root/home

/mnt

/tmp

/dev

/lib/proc

/usr 使用和维护UNIX和Linux系统的大部分基本程序都包含在/bin和/sbin里,之所以都包含bin,是因为可执行的程序都是二进制文件(binaryfiles).

/bin目录通常用来存放用户最常用的基本程序,如:

login

Shells

文件操作实用程序

系统实用程序

压缩工具

/sbin目录通常存放基本的系统和系统维护程序,如:

fsck

fdisk

mkfs

shutdown

lilo

init

二者主要区别是:/sbin中的程序只能由root(管理员)来执行.

/bin和/sbin/etc

用来存放程序所需的整个文件系统的配置文件,其中的一些重要文件如下:

passwd

shadow

fstab

hosts

motd

profile

shells

serviceslilo.conf/lost+found 用来放那些在系统非正常关机后重新启动系统时,不知道该往哪里恢复的“流浪”文件的。/boot 存放着和系统启动有关系的各种文件,包括系统的引导程序和系统核心部分。/root 这是系统管理员(root)的主目录。/home

系统中所有用户的主目录都存放在/home中。/tmp和/var

这两个目录用来存放临时文件和经常变动的文件。/mnt

按照约定,像CD-ROM,软盘这样的介质都应该安装在/mnt目录下,/mnt目录通常包含一些子目录,每个子目录是某种特定设备类型的一个安装点。例如:

/cdrom

/floppy

.... 如果我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。

这是一个非常重要的目录,它存放着各种外部设备的镜像文件, 例如第一个软盘驱动器的名字是fd0; 第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2; 第一个光盘驱动器的名字是hdc; 此外,还有modem和其他外设的名字等, 我们只需要记住最最常用的那几个外设就可以了。/usr按照约定,这个目录用来存放与系统的用户直接相关的程序或文件,这里有每一个系统用户的主目录,即相对于他们的小型“/”。/proc

这个目录下面的内容是当前在系统中运行的进程的虚拟镜像,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。/dev四、linux内核源程序目录结构源程序存放于/usr/src/linux目录下:1./document:保存帮助文档2./arch:包含多个子目录,存放与特定体系结构相关的代码。如arch/i386(intel386体系结构),arch/sparc,arch/alpha等。每个子目录下至少又包含三个子目录:kernel(存放支持该体系结构特有的诸如信号处理和SMP之类特征的实现);lib(存放该体系结构特有的诸如Strlen和memcpy之类的高效率函数)mm(存放该体系结构特有的诸如内存管理程序的实现)3./drivers:该目录占内核代码一半以上,包括显卡、网卡、SCSI适配器、软驱、PCI设备和其他外设的软件驱动程序。其他

/fs:包含linux支持的文件系统。

/include:包含源程序中大部分包含(.h)文件。

/init:包含main.c,保存大部分协调内核初始化的代码。

/ipc:实现了进程间通讯IPC。

/kernel:包含了linux最重要的部分:实现平台独立的基本功能,包括Sched.c、fork.c、exit.c。

/lib:存放字符串和内存操作函数。

/mm:包含与体系结构无关的内存管理代码。

/net:包含了linux应用的网络协议代码。/script:包含用来配置内核的脚本。五、linux常用命令介绍Shell:文本级用户界面,提供了基本功能,包括文件和目录的访问,运行程序的能力以及同操作系统间的交互作用。有几种不同的shell用于linux,常用的bash.

命令行交互:比Dos提示符功能强大:

Shellscript编程Linux的命令(也包括文件名等等)大小写是敏感的文件处理命令ls相当于dos下的dir命令,常用的参数有三个:-a-l-F。

ls–a(显示包含隐藏文件) Linux中的隐藏文件,以.开头

ls–F(注意,大写F)

使用这个参数表示在文件的后面,添加表示文件类型的符号,如*表示可执行,/表示目录,表示连结文件. 现在基本上所有的Linux发行版本的ls都已经内建了-F参数,即不用输入这个参数,也能看到各种分辨符号。ls-l(l,而不是数字1)使用长格式显示文件内容,以查看更详细的文件资料,如下所示:

drwx------

2

Guest

users

1024

Nov2121:05

Mail

-rwx--x--x

1

root

root

89080

Nov

722:41

tar*

-rwxr-xr-x

1

root

bin

5013

Aug15

9:32

uname*(文件属性

、文件数、拥有者、所属的group

、文件大小、建档日期、文件名)文件属性:一个文件用10个小格来记录文件的权限。第一个位置表示是文件或目录(-或d)剩下的前三个小格是拥有者(user)本身的权限,中间三个小格是和使用者同一组的成员(group)的权限,最后三个小格是表示其它使用者(other)的权限。与dos命令cd类似cd回到用户自己的HomeDirectory(/root)cd/mnt切换到/mnt目录下cd..回到上一级cd../..回到上一级的上一级(注意空格)mkdir,rmdir命令 建立新目录/删除已建立的目录cp命令 相当于dos下面的copy命令 cp–r源文件(source)

目的文件(target) 参数r是指连同源文件中的子目录一同拷贝。cd命令

rm命令 删除文件,和dos下面的rm(删除一个空目录)是有区别的, rm命令常用的参数有三个:-i,-r,-f。 比如要删除一个名字为test的文件: rm–itest 系统会询问:“rm:remove‘test’?”敲了y,回车以后,这个文件才会真的被删除。这是因为linux不象dos那样有undelete的命令,或者是可以用pctool等工具将删除过的文件救回来,linux中删除过的文件是救不回来的。 rm–r目录名 这个操作可以连同这个目录下面的子目录都删除,功能上和rmdir相似。 rm–f文件名(目录名) 这个操作可以进行强制删除。mv命令

用法和dos下面的move基本相同.移动目录或文件。当使用该命令来移动目录时,会连同该目录下面的子目录一同移走。linux下面没有rename的命令,可以用以下方法给一个文件或目录重命名:mv原文件(目录)名

新文件(目录)名du,df命令

du命令显示目前目录所占的磁盘空间, df命令显示目前磁盘剩余的磁盘空间。 如果du命令不加任何参数,则返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况(该功能是dos没有)。cat命令显示或连结一般的ascii文本文件。cat是concatenate的简写,类似于dos下的type命令。用法如下:cattext

显示text这个文件catfile1file2

依顺序显示file1,file2的内容catfile1file2>file3

把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。“〉”向右重定向,即把左边的结果作为输入,输入到右边的file3文件中。其中file3可以是不存在的文件——创建如果file3也可以是已经存在的文件——覆盖,变成file1+file2的内容。cat>file1:类似dos中的copyconfile1“空出一行空白行”,等待输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],结束编辑,并生成file1文件catfile1>>file2 表示将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在.more,less命令 显示一般文本文件的指令。当文本文件太长,超过一个屏幕画面时,用cat来看并不理想,可以使用more和less两个指令。More指令可以使超过一页的文件临时停留在屏幕,等用户按任一个键后,才继续显示。less除有more的功能外,还可以用方向键向上或向下滚动文件。clear命令这个命令是用来清除屏幕的,它不需要任何参数,和dos下面的clr具有相同的功能,如果你觉得屏幕太紊乱,就可以使用它清除屏幕上的信息。pwd命令这个命令的作用是显示用户当前的工作路径。man命令 man是manual(手册)的缩写字,相当于帮助logout命令 退出系统,与login相对。

基本的系统管理命令系统管理基本上可以分为两种 一种是root(系统管理员)对linux的系统管理部分,root本身的职责就是负责整个linux系统的运行稳定,增加系统安全性,校验使用者的身份,新增使用者或删除恶意的使用者,并明确每一个在机器上的使用者权限等等。 另一种是每一个使用者(包括root)对自己文件的权限管理。因为linux是多用户多任务系统,每一个使用者都有可能将其工作的内容或是一些机密性的文件放在Linux工作站上,所以对每个文件或是目录的归属和使用权,都要有非常明确的规定1)管理员使用的系统管理指令adduser命令:新增使用者账号 adduserjack 新增的用户是没有口令的,应当为用户设置口令passwd命令:修改特定用户的口令, passwdjack对于一般用户使用该命令,则只能改变自己的密码。su命令 su可以让普通用户变成具有管理员权限的超级用户(superuser),(当然要输入密码) logout就可以退回到原先的那个普通用户的状态。reboot命令重新启动系统系统将服务都关闭,然后再关闭文件系统和硬件,接着机器开始重新自检,重新引导,再次进入linux系统shutdown,halt命令使用shutdown关闭系统的时候有以下几种格式:shutdown

(系统内置2分钟关机,并传送一些消息给正在使用的user)shutdown–hnow

(下完这个指令,系统立刻关机)shutdown–rnow

(下完这个指令,系统立刻重新启动,相当于reboot)shutdown–h20:25

(系统会在今天的20:25关机)shutdown–h+10

(系统会在十分钟后关机)如果在关机之前,要传送信息给正在机器上的使用者,可以加“-q”的参数,则会输出系统内置的shutdown信息给使用者,通知他们离线。halt命令系统就会开始进入关闭过程,其效果和shutdown–hnow相同用来关闭linux操作系统的。2)普通用户使用的系统管理指令chown命令:改变文件的所有者。chmod命令:改变目录或文件的属性,即:用三位的2进制数来表示相应的三小格的权限,例如:111

rwx

101

r-x

011–wx

001–x

100

r—如:把文件test.list的属性设置为rwxr-x---,则要用chmod750test.list

设备挂接命令:mountmount-t设备类型somethingsomewhere软盘的挂接 将软盘打开写保护放入软驱。 mount–tmsdos/dev/fd0/mnt/floppy 以后对/mnt/floppy的操作,即对软盘的操作光驱的挂接 mount-tiso9660/dev/hdc/mnt/cdromU盘的挂接 mount–tvfat/dev/sda1/mnt/u_disk挂接前先准备好挂接点!如:mkdiru_disk设备卸载命令:umount光盘挂接后会锁住,直到umount后才能取出。软盘、U盘也必须先umount,否则容易出错。umount Umount/dev/fd0 或Umount/mnt/floppy 执行上述命令后,才可取出软盘。请先离开所要卸载的目录,再umount否则:devicebusy等。tar压缩/解压缩命令tarczvf文件名.tar.gz文件名1文件名2…tarzxvf文件名.tar.gz压缩:解压缩:tarztvf文件名.tar.gz查看压缩包中的文件:安装Gcc编译环境将文件夹gcc拷贝到系统中:cp–r/mnt/u/gcc/

cd进入gcc目录下:cdgcc

运行shell脚本gcc_install:./gcc_install调用图形界面命令——startx系统启动后默认进入gnome桌面环境,可用CTRL+Alt+F7进入命令行方式。在图形界面下也可以调用Rtvx终端,模拟命令行输入在命令行方式下,可用startx命令进入图形用户界面。六、Linux下的编程工具1编辑软件vi:命令状态/编辑状态1)启动vi:执行“vi文件名”;刚一启动时,vi处于命令状态,可以输入各种vi的命令,不能编辑;

2)进入编辑状态:插入:i、新增:a;

(进入编辑状态后,编辑起来很像DOS下的edit;)3)退出编辑状态:按ESC键;重新进入命令状态;

4)命令状态下常用的命令: 存盘:w 存盘退出:wq 不存盘退出:q!

2编译工具Gcc

——Linux下由自由软件基金FSF创建的重磅炸弹是一个强大的编译器,目前堪称是全世界效率最高的C/C++编译器,现在已经广泛应用在各种UNIX环境下。gcc基本用法: gcc源程序名–oFilename用参数o指定输出文件名,若不指定,默认文件名为a.out运行: ./目标文件名2)gcc–c源程序名目标文件名参数c表示只编译不链接,生成目标文件.o(可以不指定)gcc–xc源程序名–o输出文件名参数x告诉gcc从指定的步骤开始编译1)gcc–E源程序名–oFilename参数E告诉gcc预处理后停止编译过程,生成预处理后的源文件3)gcc目标文件–o输出文件连接目标文件,生成二进制代码创建进程#include<unistd.h>Pid_tfork(void);若执行成功,就向父进程返回子进程的PID,并向子进程返回0。即:只调用fork一次,但会返回两次。fork创建的新进程是和父进程一样的副本。Linux环境下进程相关程序设计:创建进程1#include<stdio.h>#include<unistd.h>voidmain(){intpid;pid=fork();/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){execlp(“/bin/ls”,”ls”,NULL);}/*childprocess*/else{wait(NULL);printf(“childComplete”);exit(0);}/*parentprocess*/}wait(NULL);进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止创建进程2#include<unistd.h>#include<stdlib.h>#include<stdio.h>voidmain(){intpid;pid=fork();/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){ puts(“inchild!”);printf(“\tchildpid=%d\n”,getpid()) printf(“\tchildppid=%d\n”,getppid())}/*childprocess*/else{ wait(NULL); puts(“inparent!”);printf(“\tparentpid=%d\n”,getpid()) printf(“\tparentppid=%d\n”,getppid()}/*parentprocess*/exit(EXIT_SUCESS);}inparent!inchild! childpid=14091 childppid=14090parentpid=14090 parentppid=1549运行结果创建进程3#include<unistd.h>#include<stdio.h>voidmain(){intp1,p2,I;while((p1=fork()<0));if(p1==0) for(i=0;i<500;i++){ printf(“child%d\n”,i);

sleep(1);}else{ while((p2=fork())<0); if(p2==0) for(i=0;i<500;i++){ printf(“anotherchild%d\n”,i); sleep(1); } else{ for(i=0;i<500;i++){ printf(“parent%d\n”,i);

sleep(1); } wait(NULL);}} }LinuxthreadLinux内核2.2引入了线程的概念。Linux系统下的多线程遵循POSIX线程接口,称为pthread。 从程序员的角度,Pthread可以看作是由实现POSIX线程标准的C函数调用和数据结构、提供接口的头文件(<pthread.h>),以及让调用起作用的库(libpthread.o)组成的集合 编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.opthread_create()创建pthread_join()挂起Pthread_cancel()取消……一、熟悉linux系统环境1、选择启动linux操作系统: 以root身份登录,密码:123456。2、默认进入图形用户界面模式,调用rtvx终端程序,进行如下练习: 1)练习linux常用命令 2)练习使用软盘或U盘(将源程序拷贝出来) *3)安装

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论