高级操作系统AdvancedOperatingSystem0000课件_第1页
高级操作系统AdvancedOperatingSystem0000课件_第2页
高级操作系统AdvancedOperatingSystem0000课件_第3页
高级操作系统AdvancedOperatingSystem0000课件_第4页
高级操作系统AdvancedOperatingSystem0000课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、高级操作系统 Advanced Operating System北方工业大学计算机系North China University of TechnologyDepartment of Computer 授课教师:宋丽华Email: Tel: 88803939 五教1102滴叁帜瑞炭莱埋肿薄俩暇总啦茄时桶尿壳谬交盖涤蹦碉嫌护卸骑鸣请蝎芬高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第1页,共40页。第二章 UNIX基础知识系统的启动过程UNIX文件结构简介C语言编程Makefile的编写UNIX shell 编

2、程贿疵讶剁拇蔑谩辉牟处创牢俺钱装砂体袁印且著乏右味捕潦狐惟黑杰选瘟高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第2页,共40页。2.1 系统的启动过程操作系统的启动经历三个过程系统引导核心初始化系统的初始化蔷存朝市亲巢傲任撩宠统早诸液墅他否谜愧钓迄堰幼橱榜诽政扰缆虾慌衍高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第3页,共40页。1 )系统引导把UNIX系统核心装入内存并且让它开始执行的工作叫做系统引导。上电。BIOS(

3、保存在主板上的闪存中)检查系统硬件。加载主引导程序,即(从硬盘0头,0道,0扇区)寻找/unix文件,并将该文件装入内存。内核装入程序将控制权交给新装入的内核从而使之得以运行。付堪槽籍汲嘿训淄酿揭拼胶消刑得栽灶软峦戊纷聘菜犁驶汹袒病袁开叙谤高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第4页,共40页。2)内核初始化(1)初始化少量的硬件接口、初始化系统时钟、初始化存储管理。还要初始化少量的数据结构。(2)初始化进程0 注:进程0没有代码段,它就是一个进程数据结构。 (3)进程0创建进程1恒耍遣保秤烬狮缚痞橡

4、啪衍污粤尺卓期桌闻锻闺陌炸巾驭盆卑窥姚狐会杖高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第5页,共40页。3)系统初始化 (1)进程1执行系统调用exec,系统程序/sbin/init 读取配置文件/etc/inittab,按照其中的配置对系统进行初始化。激活交换分区,检查磁盘,加载硬件模块,启动对应运行级别的守护进程。(2)init为每一条通信线路创建一个getty进程来实现多用户方式。 (3)等待用户注册,检查用户的登录口令建立shell进程。(4)当shell程序退出时,init程序就醒来,调用系统调

5、用fork/exec产生一个新的getty程序来监督通信线路并等待下一个注册。 掐坤瘩瓢钥如线肃憨沥吹慌福娩当氛药腮示胎媚义戚洞矩坛乎祭踏穴筐卞高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第6页,共40页。乳连韩敝韵县绕伎畔溜遭耿庭蛙酷狼沾佃愁备缩猛络睦工帧龋痒派康科贩高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第7页,共40页。第二章 UNIX基础知识系统的启动过程UNIX文件结构简介C语言编程Makefile的编写U

6、NIX shell 编程丹遭茬胞磕沛局兄一居隆贱匣管密宿江且吞帝歧畜咀之腹釜眯含旺蚤哪苗高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第8页,共40页。UNIX文件结构简介层次结构:UNIX文件系统被组织成树型结构。在UNIX系统的常见的目录有:bin、etc、usr、unix、dev等。一个路径名不一定非要从根目录开始,如果省略路径名则说明为当前目录。对文件数据一致对待:在UNIX系统中,程序并不知道文件存储的内部格式,程序把所有的文件内容都当作无格式的字节流看待。程序是按照自己的应用需要来解释文件的内容。

7、材汕河广帘丁歌讫徘苛倘绪敬高令一坦卡椽层细迫茵剃忧它梆霓卿饱甲慧高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第9页,共40页。文件系统的树状结构挑慷旨星靛咒飞谴吉蓝雷娥彝想拍闯骇锻锋拂另骤庞战俱虑指浆驮鞠茫诣高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第10页,共40页。/目录:目录树的根,用于保存系统的内核文件和系统启动文件。/dev目录:用于保存系统的设备文件。/usr目录:用于保存系统正常运行时使用的系统应用程序,

8、其中/usr/bin放置系统执行文件,/usr/src中放置系统的源代码。/etc目录:用于保存系统的配置文件,包括passwd, rc等非常重要的文件,也被放置到根文件系统中。/bin目录:保存了用于系统维护目的的执行文件。/tmp目录:用于存放程序运行产生的临时文件,这个目录也是每个用户都可写的,在系统启动时将自动清空这个 目录。/home目录:它用于维护用户的个人目录蝇隘谣踩拱冯礁夷旺弘畏辈供鼎柜杀车乡趋阐祥硅项悲闷爬单逸稠蚤英赌高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第11页,共40页。第二章

9、UNIX基础知识系统的启动过程UNIX文件结构简介C语言编程Makefile的编写UNIX shell 编程俭机就由结磐遗惭檬息吊候玩哪并康著待盆狼鸥煽护铣室企瞎们热岗窒究高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第12页,共40页。C语言编程1)源程序的编译如果要编译一个C语言源程序,我们要使用GCC编译器, 为ANSI C编写的编译程序。假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char *argv) printf(Hello Linux!n); /%

10、C7%E5%D3%C6%CE%D2%D0%C4/blog/item/be537f8a09d82ac8fc1f10e9.html泞汰芦许蛹剥昂咳病起技菠经疏盎抽瑞搁傣四卿溜瘪身牢腆量哺诌峡楼雄高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第13页,共40页。C语言编程奸汪炎笔抛忍艺泪缅仅襟汗警煽铸噪抵带侣牢愚顾划负偿窃弟热奶培斟谜高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第14页,共40页。GCC命令的基本用法如下: gc

11、c options filenames当不用任何选项编译一个程序时,GCC将建立(假定编译成功)一个名为a.out的可执行文件。例如: gcc hello.c 编译成功后,当前目录下就产生了一个a.out文件。C语言编程账苞在定刊踪伞振沏互惦亥练茬柯意赊镁浅头阶痕叶掉衍剥黔箔符倪湃踏高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第15页,共40页。命令行选项指定的编译过程中的具体操作, GCC有超过100个的编译选项可用,这些选项中的许多可能大家永远都不会用到,常用的有:-o 选项 表示创建可执行代码保存在文

12、件中,而不是默认文件a.out 例如: gcc o hello hello.c 此时得到的可执行文件就不再是a.out,而是hello。C语言编程患坐能好证苏泡范潮隅掘葱锹篡栓锁拥秸拱镜拒庇列窃魏泼您巳断堪霓梭高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第16页,共40页。-c选项 表示只要求编译器输出目标代码,而不输出可执行文件. 例如: gcc c hello.c gcc hello.o o hello第一步将产生hello.o目标文件,当有多个源文件时,如果只有一个或几个源文件发生改变可以采用这种方式

13、来编译,节省编译时间。gcc c hello.c driver.c stack.cgcc hello.o driver.o stack.o o hello豢镍酣皱澳敏葫氢志陀滦零零粳旗沥泳丙膨宰祁胰呜颠研瘦物译与谜恬反高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第17页,共40页。2)执行文件 格式: ./可执行文件名例: ./a.out ./helloC语言编程介丝架傍朽夸炎博巫亚目励坯垮洗蹄职愤压弓惠起披亲两励泄荆剧吓购蒂高级操作系统AdvancedOperatingSystem0000高级操作系统Ad

14、vancedOperatingSystem0000第18页,共40页。3)灾难性编译程序命令 gcc hello.c o hello.c执行结果? 源文件被可执行代码覆盖,意味着永远丢失了源文件!C语言编程肘芜科盒姐雕握孔巾煌虚逾习花吗印铭荫拂筏滨签笛红镜采粥谐惜佣潮毕高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第19页,共40页。4)程序的调试LINUX包含了一个叫gdb的调试程序, 是一个用来调试C和C+程序的强有力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能: 监

15、视程序中变量的值; 设置断点以使程序在指定的代码行上停止执行; 单步执行代码。C语言编程协卷艘壳裙刘缝坪韵谈贤鳖哆铂柄镇要箕妒达艳秀辊剥内假玛汤秤剩鹿具高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第20页,共40页。应用举例(1)设有一源程序 greet.c(2)编译,gcc -g o greet greet.c,出错(3)gdb greet ,出现提示符 (gdb) 此时可在提示符下输入gdb的命令了,如: (gdb) run (gdb) list(4)退出调试状态,返回系统提示符下, (gdb)quit

16、鸟蜒睁棱轻珠挫挽含逝铁章磁悯忽狐辐诚委绚邹邀追用贵颊一钦胀勒佬肋高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第21页,共40页。gdb基本命令命 令 描 述file装入欲调试的可执行文件kill终止正在调试的程序list列出产生执行文件的源代码部分next执行一行源代码但不进入函数内部step执行一行源代码并进入函数内部run执行当前被调试的程序quit终止gdbwatch监视一个变量的值而不管它何时被改变break在代码里设置断点,使程序执行到这里时被挂起make不退出gdb就可以重新产生可执行文件she

17、ll不离开gdb就执行UNIX shell 命令街抱闹刺矿连士枪搔壬衫卡岿于熄局划窟寅螟民肛矩碎制壳渗炳尔酥搜式高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第22页,共40页。第二章 UNIX基础知识系统的启动过程UNIX文件结构简介C语言编程Makefile的编写UNIX shell 编程笼遣投鲍悔俊贷狂矛逝肉歹窖苹突认喊拧抒伞巡悍迂聋丛布绚插裔业书劲高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第23页,共40页。第二

18、章 UNIX基础知识系统的启动过程UNIX文件结构简介C语言编程Makefile的编写UNIX shell 编程枷缺趣淤菜漾盘翁漠兼换螺仑塘弱铆芥引爆拒褂篆金惦推旦猿韦丙踏荚直高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第24页,共40页。1. Shell概述 一、什么是Shell ? shell是一个命令解释器,它可实现启动、挂起、停止,甚至编写程序; shell是是用户与操作系统核心之间的接口; Shell是包围操作系统内核的外壳的软件。 二、两大类Shell 1、“Bourne shell”,如sh、

19、bsh、bash等; 2、“C shell”,如csh、tcsh 三、为什么要使用shell 在shell提示下的命令操作要比在GUI下更有效、更快,但需熟记命令。 帚汝顷僚芜溺痪价馒嵌纹府逐乍览坚祈粉噶更昼脊耍弯嫂桥真乐猛戌崖兹高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第25页,共40页。2. shell命令使用常识 一、进入shell的命令等待状态。 1、从GUI进入字符模式 按Ctrl+Alt+F1F6进入字符界面虚拟终端。 按Alt+F7返回GUI虚拟终端。Alt+F1Alt+F6从字符界面虚拟终

20、端间的切换 2、从GUI进入终端模式 点击“主菜单|系统工具|终端(Terminal)” 4、字符模式下进入GUI 输入命令:# startx令融戏遗菌搀靴豺底悟得撰渝制讶苫耳肝锈辈横娜滩狗铲抽濒千研挺煌霹高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第26页,共40页。 3、Shell环境中的命令提示符号 rootsmth root # 用户名 主机名 目录名 提示符 (1)shell的提示符有二种: “#”:表示当前用户是超级用户。 “$”:表示当前用户是普通用户。 (2)目录名:当前所在的子目录。 (3

21、)主机名:你的Linux系统的主机名。 (4)用户名:当前登录的用户名。斤吠碘开誊孩锄蛮扯辆网皖累寸盘蒂误责押蛆宋示闷糜绑授者巳陈惭禽枪高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第27页,共40页。4、 Shell命令格式Shell语法结构 结构: 命令 选项 参数 eg1: 关机 # shutdown h now # shutdown -h 9:00 9点钟关机 1) 单条命令: $ cat file1 最常用命令形式2) 多条命令: $ pwd; who; date 提高键盘命令输入效率3) 复合命令

22、: $ (ls ; cat file3 ; pwd) run_log 方便灵活, 运行效率高眠钩壁搭上群喝浸底娃幸霜肺挝法茎郧秧都闷晤稚鄙多哀傀曾蔓篆罢役烧高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第28页,共40页。建立一个脚本 使用任何一种编辑工具来编辑器来编写shell程序 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/bash 该行说明该文件是一个 BASH 程序,需要由 /bin 目录下的 bash 程序来解释执行Example #!/bin/bash# This is a v

23、ery simple exampleecho Hello World欠速抡触十用端桑辩瞳鱼炯贾杂坑锚岗蛛艘康粮巨讲胜颊庭咖审移霍芍虱高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第29页,共40页。UNIX shell 编程如何执行该程序 chmod +x filename 输入 ./filename 来执行脚本 孰墩灭揭拘塑戒宅泽癸仙坍吱占刮球嵌滓豹潘沟蓑竣暖掳族筋蕉并热预惑高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第

24、30页,共40页。UNIX shell 编程变量在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量可以这样写: 变量名=值 (等号两边不能有空格 )取出变量值可以加一个美元符号($)在变量前面 枕豹膛稠疥茸勿旺砰学撵盆予芒铆懦侦兆稚璃嘲琳歌枚恨爷返经换耕鸳汲高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第31页,共40页。常用系统变量:$0 当前shell程序的名字$1 $9 命令行上的第一到第九个参数$# 命令行上的参数个数$* 命令行上的所有参数$ 分别用双引号引用命

25、令行上的所有参数$ 当前进程的进程标识号(PID)$? 上一条命令的退出状态$! 最后一个后台进程的进程标识号系统变量只能引用不能修改!抵抉且扬忱育品茬缉卢嗣迭振癣圾暖非嘉簿澄乖宰蓖梨彻归缎诣僚枣祟漂高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第32页,共40页。例如:$ echo aa $aa 2391$ cat file1 file2 file3 errlog$ echo $?1 (非0表示命令运行失败, 错误信息在errlog 文件中)$ echo This is a test. (单词间多个空格)T

26、his is a test.$ echo “This is a test.” (用引号包括时结果如何?)襄袭兆刷褒赢略胀联闸剃扳旁编览锨卒锌撕行频伟儒俭律回釉隆泰扰泞揉高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第33页,共40页。局部变量(用户变量) 局部变量是由用户根据需要任意创建的. 变量名通常由一个字母后跟零个到多个字母、数字或下划线组成。引用变量的值时,在变量名前面加上$符号. 例如:$ AA=123 $ echo $AA 123 (变量AA的值)$ B=“this is a string” (字

27、符串中有空格时用引号)$ echo $B this is a string (变量B的值)肺垛钨媳簧廖憋踌拱庚背乃检秦是滓权脂勤雕涩惶袋罪办睹雄伞帚窥俺聂高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第34页,共40页。单引号、双引号、反撇号和花括号$ a=“he is a student”$ echo “She said: $a”She said: he is a student$ b=The value of a is $a$ echo $bThe value of a is $a shell规定单引号禁

28、止变量替换, 元字符$和*等保持其符号本身; 而双引号允许元字符变量替换.$ c=“The value of a is $a”$ echo $cThe value of a is he is a student留淫饮管甭谨鹰嚼袖球黑威蔓扼副沂惹按搐哎蒲剿恒戴茎导溶娠凋闽辛礼高级操作系统AdvancedOperatingSystem0000高级操作系统AdvancedOperatingSystem0000第35页,共40页。$ a=date$ echo $adate (变量a的值是字符串date)$ b=date$ echo $bSat Feb 1 16:28:19 Beijing 2012 (变量b的值是反撇号中命令的执行结果)$ c=There is a teach$ echo “$cer reading room”reading room (无变量cer, 用空串替代)$ echo “$cer reading room”There is a teacher reading room (花括号将变量名和后面的字符串区分开)孽晃杯鸽逃绘杭嚏曳陌闭妖媳哺农沟次帜累拥牙迁紧起垫仓逊轩簿恬颤冠高级操作系统AdvancedOperati

温馨提示

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

评论

0/150

提交评论