文档详情

linux操作系统培训

功***
实名认证
店铺
2024-11-02
PPT
804KB
约28页
linux操作系统培训_第1页
1/28
linux操作系统培训_第2页
2/28
linux操作系统培训_第3页
3/28

单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2007 VCOM Corporation,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Linux,操作系统培训,内容摘要,Linux,基础,Linux,常用操作命令,Linux,设备管理,Linux,文件管理,Linux,进程调度,Linux,多线程编程,Linux,进程间通信,Linux,基础,操作系统的概念,操作系统是管理计算机系统资源(软件和硬件)资源的系统软件,它为计算机提供方便,有效,安全,可靠的工作环境主要包括:进程管理,存储器管理,设备管理,文件管理,作业管理等操作系统的分类操作系统分为实时操作系统和非实时操作系统,又可以分为嵌入式操作系统和非嵌入式操作系统等linux,操作系统即可以作为准实时的操作系统使用,也可作为非实时操作系统使用,并且可以满足服务器操作系统的要求,在桌面操作系统领域也得到较大的发展所以,,linux,操作系统已经渗透到嵌入式领域、服务器领域、个人,pc,领域,成为目前应用领域最广的一种操作系统Linux,基础,Linux,系统的组成,整个,linux,系统由内核、设备驱动、各种运行时的库、,shell,及应用程序等组成,。

Linux,的启动过程在硬件上电之后,首先会有一个自举程序运行(在嵌入式领域成为,loader,在,pc,中成为,bios),然后自举程序在初始化必要的硬件(例如内存)之后将,linux,内核读取到内存中,然后跳转到内核的开始位置运行,linux,内核,.,linux,内核在进行必要的初始化设置工作和挂载根文件系统之后,会启动文件系统中的一个程序作为系统中的第一个进程,这个进程就是大名鼎鼎的,init,进程,,init,进程会,然后运行,etc,目录下的对应的,shell,脚本文件Linux,基础,Linux,内核的作用,内核是,Linux,操作系统的核心,它负责系统的文件管理、设备管理、进程管理、存储管理、网络协议,直接决定着系统的性能和稳定性linux,的版本号,通常我们所说的,linux,的版本号,指的就是,linux,内核的版本号版本号由三部分组成主版本号、次版本号、末版本号例如:,2.6.19 2,为主版本号、,6,为次版本号、,19,为末版本号同时可以通过版本号来确定,linux,的版本是稳定版本还是开发版本(次版本号奇数为开发版本,偶数为稳定版本)Linux,常用操作命令,命令,功能,ls,列出当前目录下有哪些文件和目录。

ls l,为列出一个目录下的详细信息),cd,进入一个目录cd.,为进入上一级目录),pwd,显示当前目录rm,删除一个文件或目录rm r,为删除一个目录及该目录下的所有文件),mkdir,创建一个目录cp,拷贝一个文件cp a b,把,a,文件拷贝成,b,文件),du,列出目录占用磁盘空间的大小,rmdir,删除一个目录,find,在指定路径查找文件,Linux,常用操作命令,命令,功能,grep,在指定文件查找指定字符串,mv,移动文件或目录,chmod,改变文件权限指令,man,命令或函数帮助查询指令,top,查看,cpu,和内存使用情况的指令,ps,查看当前运行的进程的指令,pstree,查看进程树的指令,Linux,设备管理,Linux,上层应用与实际设备的关联,Linux,对于设备的管理是通过设备驱动程序来进行管理,采用设备文件的方式进行关联每个设备文件都有设备类型,主设备号、次设备号,在驱动程序中会注册这些设备号这样当上层应用程序操作设备文件时,就会将请求通过,Linux,操作系统调用传递到驱动程序中,驱动程序控制硬件设备完成相应的操作Linux,设备文件一般在,/dev,目录下面。

例如如下设备文件:,crw-rw-1 root uucp 4,64 12,月,8 09:57/dev/ttyS0,是指,/dev/ttyS0,为字符型设备,主设备号为,4,,次设备号为,64,其实这就是,linux,系统中的串口,1,的设备文件我们打开这个设备文件,然后写入数据,我们写入的数据就会从串口发送出去,我们读入数据,就会读取到从串口收到的数据如果我们想控制串口的速率、校验位、码位的长度,我们只需要调用,ioctl,函数,然后传入相应的数据就可以了Linux,文件管理,Linux,系统中使用的文件类型,目前,linux,采用的文件系统有,ext3,文件系统,但是在嵌入式,linux,操作系统中更多的使用的是,jffs2,yaffs,和,nfs,网络文件系统Jffs2,文件系统是专为,nor flash,设计的文件系统,考虑到了,nor flash,的许多特性,同时具有压缩性能,一般可以达到,2,:,1,的压缩效果,但是在用于大于,128Mbytes,的,flash,时,效果不是太好Yaffs,文件系统是专为,nand flash,设计的文件系统,考虑到了,nand falsh,的许多的特性,但是不具有压缩性能,但其加载速度较快,使用于大容量存储的场合。

除去以上文件类型的不同之外,,linux,提供统一的,api,操作函数,来实现对文件系统的管理另外,在,linux,中,在对一个设备上的文件进行操作时,需要首先挂载这个设备到文件系统中,才能操作这个设备上的文件在,linux,内核启动时,会默认挂载一个文件系统,这个就是根文件系统,此后所有的文件系统都是基于这个文件系统进行挂载,同时也可以卸载,但是根文件系统是不能卸载的挂载一个文件系统的命令如下:,mount t yaffs/dev/mtdblock0/mnt,意思是说,把文件类型为,yaffs,的,mtdblock0,上的文件系统挂载到,/mnt,目录下,Linux,进程调度,Linux,调度算法,Linux,调度算法把,CPU,的时间划分为时期(,epoch,)在一个单独的时期内,每个进程有一个指定的时间片,时间片持续时间从这个时期的开始计算一般情况下,不同的进程有不同大小的时间片时间片的值是在一个时期内,分配给进程的最大,CPU,时间部分当一个进程用完它的时间片时,这个进程被抢占,并用另一个可运行进程代替它当然,在同一时期内,一个进程可以几次被调度程序选中(只要它的时间片还没用完),例如,如果进程挂起自己,等待,I/O,,那么,它还剩余一些时间片,并可以在同一时期内再度被选中。

当所有的可运行进程都用完它们的时间片时,一个时期才结束;在这种情况下,调度程序的算法重新计算所有进程的时间片,然后,一个新的时期开始Linux,进程管理,Linux,进程的优先级,静态优先级(,Static priority,),这种优先级由用户赋给实时进程,范围从,1,到,99,,调度程序从不改变它动态优先级(,Dynamic prority,),这种优先级只应用于普通进程实质上它是基本时间片由此也叫进程的基本优先级(,base priority,)与当前时期内的剩余时间片之和当然,实时进程的静态优先级总是高于普通进程的动态优先级,只有当,TASK_RUNNING,状态没有实时进程时,调度程序才开始运行普通进程Linux,进程管理,Linux,进程的创建,在,Linux,中要使用,exec,函数族系统调用,execve,()对当前进程进行替换,替换者为一个指定的程序,其参数包括文件名(,filename,)、参数列表(,argv,)以及环境变量(,envp,)exec,函数族当然不止一个,但它们大致相同,在,Linux,中,它们分别是:,execl,,,execlp,,,execle,,,execv,,,execve,和,execvp,,下面我只以,execlp,为例,其它函数究竟与,execlp,有何区别,请通过,manexec,命令来了解它们的具体情况。

一个进程一旦调用,exec,类函数,它本身就,死亡,了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了不过,exec,类函数中有的还允许继承环境变量之类的信息Linux,线程管理,使用线程的优点,和进程相比,它是一种非常“节俭”的多任务操作方式(内存占用,启动时间,切换时间,),和进程相比,线程间的通信更加方便提高应用程序响应,使多,CPU,系统更加有效,改善程序结构,复杂问题简单化,Linux,线程管理,多线程的例子,#include,#include,#include,#include,void thread(void),int i;,for(i=0;i3;i+),printf(This is a pthreadn);,usleep(100*1000);,int main(void),pthread_t id;,int i,ret;,ret=pthread_create(,if(ret!=0),printf(Create pthread error!n);,exit(1);,for(i=0;i3;i+),printf(This is the main processn);,usleep(100*1000);,pthread_join(id,NULL);,return(0);,Linux,线程管理,多线程的编译,APP=threadTest,$(APP):$(APP).c,gcc-Wall-o$(APP)$(APP).c-lpthread,clean:,rm$(APP),Linux,进程间通信,Linux,进程间通信的方法,管道、消息队列、共享内存、信号量、套接口、信号,Linux,进程间通信,管道,管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信,无名管道,无名管道由,pipe,()函数创建:,int pipe(int filedis2),;,参数,filedis,返回两个文件描述符:,filedes0,为读而打开,,filedes1,为写而打开。

filedes1,的输出是,filedes0,的输入Linux,进程间通信,无名管道的例子,#include,#include,#include,#include,#include,#define INPUT 0,#define OUTPUT 1,int main(),int file_descriptors2;,/*,定义子进程号*,/,pid_t pid;,char buf256;,int returned_count;,/*,创建无名管道*,/,pipe(file_descriptors);,/*,创建子进程*,/,if(pid=fork()=-1),printf(Error in forkn);,exit(1);,Linux,进程间通信,无名管道的例子,if(pid=0),/*,执行子进程*,/,printf(child process.n);,/*,子进程向父进程写数据,关闭管道的读端*,/,close(file_descriptorsINPUT);,write(file_descriptorsOUTPUT,test data,strlen(test data);,exit(0);,else,/*,执行父进程*,/,printf(parent process.n);,/*,父进程从管道读取子进程写的数据,关闭管道的写端*,/,close(file_descriptorsOUTPUT);,returned_count=read(file_descriptorsINPUT,buf,sizeof(buf)-1);,if(returned_count0),printf(receive data from child is e。

下载提示
相关文档
正为您匹配相似的精品文档