电子科大 第6章 Linux操作系统基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章Linux操作系统基础2第6章Linux操作系统基础主要内容1324Linux操作系统概述Linux的使用Linux设备管理Linux内核的结构3第6章Linux操作系统基础6.1.1Linux操作系统的产生及发展1990年,LinusTorvalds首次接触Minix;1991年,LinusTorvalds开始在Minix上编写各种驱动程序等操作系统内核组件;1991年,LinusTorvalds公开了Linux内核;1993年,Linux1.0版发行,Linux转向GPL版权协议;1994年,Linux的第一个商业发行版Slackware问世;1996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13符合POSIX标准;1999年,Linux的简体中文发行版相继问世;2001年,Linux2.4版内核发布;2003年,Linux2.6版内核发布。4第6章Linux操作系统基础6.1.1Linux操作系统的产生及发展Linux内核的版本号2.6.24——其中2是主版本号,6是次版本号,24是修订版本号;——如果次版本号是偶数,说明是稳定版本;——如果次版本号是奇数,则是开发版本。我们一般使用稳定版本5第6章Linux操作系统基础6.1.2Linux操作系统的特点自由开放软件真正的多任务多用户UNIX的完整实现完全符合POSIX标准良好的用户界面强大的网络功能良好的可移植性设备独立性6第6章Linux操作系统基础主要内容1324Linux操作系统概述Linux的使用Linux设备管理Linux内核的结构7第6章Linux操作系统基础6.2Linux常用命令在线帮助命令:man文件管理命令文件拷贝:cp文件移动:mv文件删除:rm目录管理命令创建目录:mkdir删除空目录:rmdir改变工作目录:cd显示当前完整路径:pwd列出当前目录内容:ls文本处理命令按行排序:sort删除重复行:uniq备份与压缩命令创建备份:tar压缩和解压缩:gzip解压缩:unzip改变文件或目录的访问权限命令改变访问权限:chmod改变所属的组:chgrp更改拥有者和所属组:chown与用户有关的命令设置和修改用户口令:passwd用户之间切换:su系统管理命令查看当前的进程:ps结束正在运行的程序:kill8第6章Linux操作系统基础系统管理命令实时显示系统中各个进程的资源占用状况:top强制把内存中的数据写回硬盘:sync关闭或重启Linux系统:shutdown查看当前系统内存的使用情况:freeLinux磁盘管理命令检查文件系统的磁盘空间占用情况:df统计目录(或文件)所占磁盘空间的大小:du挂接设备:mount卸载已经挂接的设备:umountLinux其它命令显示一段文字:echo显示某年某月的日历:cal清除屏幕上的信息:clear6.2Linux常用命令9第6章Linux操作系统基础主要内容1324Linux操作系统概述Linux的使用Linux设备管理Linux内核的结构10第6章Linux操作系统基础操作系统内核的结构模式可分为两种:整体式的单内核模式单内核也叫集中式操作系统。以提高系统执行效率为设计理念,缺点是系统升级比较困难。层次式的微内核模式微内核是指把操作系统结构中的内存管理、设备管理、文件系统等高级服务功能尽可能地从内核中分离出来,变成几个独立的非内核模块,而在内核中只保留少量最基本的功能,使内核变得简洁可靠。6.3Linux内核的结构Linux采用的是单内核模式,Linux内核主要由五个子系统组成:进程管理,内存管理,虚拟文件系统,网络接口,进程间通信。11第6章Linux操作系统基础6.3.1进程管理进程管理的主要任务是完成进程的创建、中止、进程间的通信及任务调度等。进程管理的相关源码文件存放在内核源码的kernel目录中,在嵌入式系统的开发过程中,一般不需要改动该目录下的文件。较新版本的Linux内核中增加了基于抢占式的任务调度方式,使内核的实时性得到了很大的提高,更适合于嵌入式应用。12第6章Linux操作系统基础6.3.1进程管理进程调度控制进程对CPU的访问。采用适当的调度策略使各进程能够合理的使用CPU。进程的定义一个进程是一个程序的一次执行过程。Linux进程的状态运行态、可中断等待态、不可中断等待态、僵死态、暂停态Linux下进程的结构数据段、堆栈段和代码段Linux进程的种类交互进程、批处理进程、守护进程Linux进程的创建fork()函数进程所有操作都要依赖进程控制块task_struct结构,task_struct结构是进程实体的核心,是进程存在的唯一标志。13第6章Linux操作系统基础6.3.1进程管理进程控制块(PCB)进程控制块的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息,它使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。14第6章Linux操作系统基础6.3.1进程管理进程控制块(PCB)通常PCB包含如下一些信息:进程表识符name进程当前状态进程相应的程序和数据地址进程资源清单进程优先级priotityCPU现场保护区cpustatus进程同步与通信机制进程所在队列PCB的链接字与进程有关的其他信息15第6章Linux操作系统基础6.3.1进程管理进程状态16第6章Linux操作系统基础6.3.1进程管理进程ID(PID)一个进程描述的数字。通过数字可以知道是哪一个进程,即PID。父进程的ID:PPID启动进程的用户ID是UID17第6章Linux操作系统基础6.3.1进程管理获取ID#includesys/types.h#includeunistd.hpid_tgetpid(void)/*获取本进程ID*/pid_tgetppid(void)/*获取父进程ID*/例:getpid.c#includestdio.h#includeunistd.h#includestdlib.hIntmain(void){printf(“PID=%d\n”,getpid());printf(“PPID=%d\n”,getppid());return0;}18第6章Linux操作系统基础6.3.1进程管理进程创建#includeunistd.hpid_tfork(void)功能:创建子进程19第6章Linux操作系统基础6.3.1进程管理进程创建例:fork1.c#includesys/types.h#includeunistd.hmain(){pid_tpid;/*此时仅有一个进程*/pid=fork();/*此时已经有两个进程在同时运行*/if(pid0)printf(“errorinfork!”);elseif(pid==0)printf(“Iamthechildprocess,IDis%d\n”,getpid());elseprintf(“Iamtheparentprocess,IDis%d\n”,geytpid());}20第6章Linux操作系统基础6.3.1进程管理进程创建例:写出运行结果#includestdio.h#includeunistd.hintmain(void){pid_tpid;intcount=0;pid=fork();count++;printf(“count=%d\n”,count);return0;}21第6章Linux操作系统基础6.3.1进程管理进程创建#includesys/types.h#includeunistd.hpid_tvfork(void)功能:创建子进程fork与vfork区别:1、fork子进程拷贝父进程的数据段vfork子进程与父进程共享数据段2、fork父、子进程的执行次序不确定vfork子进程先运行,父进程后运行22第6章Linux操作系统基础6.3.1进程管理进程创建例:#includestdio.h#includeunistd.hintmain(void){pid_tpid;intcount=0;pid=vfork();count++;printf(“count=%d\n”,count);return0;}23第6章Linux操作系统基础6.3.1进程管理进程创建除此之外,还有exec函数族,不做详细说明24第6章Linux操作系统基础6.3.1进程管理进程等待#includesys/types.h#includesys/wait.hpid_twait(int*status)功能:阻塞该进程,直到其某个子进程退出25第6章Linux操作系统基础6.3.1进程管理进程等待例:wait.c#includesys/types.h#includesys/wait.h#includeunistd.h#includestdlib.hvoidmain(){pid_tpc,pr;pc=fork();if(pc==0){printf(“Thisischildprocesswithpidof%d\n”,getpid());sleep(10);}elseif(pc0)pr=wait(NULL);printf(“Icatchedachildprocesswithpidof%d\n”),pr);}exit(0);}26第6章Linux操作系统基础6.3.2内存管理内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存。Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制。27第6章Linux操作系统基础6.3.3虚拟文件系统Linux的文件系统由两层结构组成。第一层是虚拟文件系统(VFS),第二层是各种不同的具体文件系统。28第6章Linux操作系统基础6.3.4进程间通信信号机制管道消息队列命名管道信号是在软件层次上对中断机制的一种模拟,是进程间通信机制中唯一的异步通信机制。用于发送信号的主要系统函数有:kill()、raise()、sigqueue()、alarm()、setitimer()以及abort()。管道是利用有公共祖先的进程之间的共享文件描述符进行的一种通讯方式。命名管道不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。消息队列实际上就是一个消息的链表。每个消息队列都有一个队列头,用结构structmsg_queue来描述。目前主要有两种类型的消息队列:POSIX消息队列和系统V消息队列。29第6章Linux操作系统基础6.3.4进程间通讯进程间通讯进程间通讯概述;管道通讯;信号通讯;共享内存。30第6章Linux操作系统基础6.3.4进程间通讯进程间通讯目的1、数据传输一个进程需要将它的数据发送给另一个进程2、资源共享多个进程之间共享同样的资源,特别是使用临界资源的时候3、通知事件一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件4、进程控制有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变31第6章Linux操作系统基础6.3.4进程间通讯进程间通讯发展1、UNIX进程间通信2、基于SystemV进程间通信3、POSIX进程间通信32第6章Linux操作系统基础6.3.4进程间通讯进程间通讯分类管道(pipe)和有名管道(FIFO)信号(signa

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功