2015.1.131.登陆时用管理员身份root登陆2.mv/mnt/OK2440/hello/usr/src移动改名:mvprog.ctest.c2.1gcchello.c–ohello普通编译运行在Linux系统中./hello运行文件2.2/usr/src/usr/arm/3.4.1/arm-linux-gcchello.c–ohelloarm交叉编译运行在开发板上./helloarm3.NFS配置ifconfigeth0192.168.0.22up配置PC机IP地址Ifconfigeth0192.168.0.11up配置板子IP地址ping192.168.0.11PC机中:serviceportmaprestartservicenfsrestart在/etc/exports中输入/*(rw,sync,no_root_squash)其中/代表根目录开发板中:mnt192.168.0.11://mnt表示把PC机/根目录中的文件共享到开发板的mnt文件下4.多进程编程实验fork(分叉)新进程的系统调用#includeunistd.hpid_tpid;pid=fork();getpid()函数得到该进程的ID号进程的结束:1.#includestdlib.hvoidexit(intstatus)2.voidabort(void)实验程序:#include“stdio.h”#include“unistd.h”#include“sys/types.h”main(){pid_tpid;pid=fork();if(pid0){printf(“forkiswrong\n”);exit(1);}elseif(pid==0){while(1){printf(“thechildprocessisrunningnow.pid=%d\n”,getpid());sleep(1);}}else{while(1){printf(“theperentprocessisrunningnow.pid=%d\n”,getpid());sleep(1);}}return0;}5.改变文件属性chmod777文件名chmodx+r+w文件名6.创建文件夹mkdirtest2015/1/141.进程和线程:进程是系统资源管理的最小单位,线程是程序执行的最小单位,线程和进程十分相似,不同的只是线程比进程小。线程和进程的最大区别在于线程完全共享相同的地址空间,运行在同一地址上。2.实验程序:#includestdio.h#includestddef.h#includeunistd.h#include“pthread.h”thread1(){while(1){printf(“Iamthethread\n”);sleep(1);}}main(){intret;pthread_tid;ret=pthread_create(&id,NULL,(void*)thread1,NULL);//线程生成函数if(ret!=0){printf(“thread1createerror\n”);exit(1);}while(1){printf(“Iamthemain-thread\n”);sleep(1);}}编译线程程序:gccthread.c–othread–lpthread3.Linux下进程间通信的几种主要手段:管道及有名管道。信号。报文队列(消息队列)。共享内存。信号量。套接口。主要是共享内存和信号量。4.共享内存(1)创建与打开#includesys/type.h#includesys/ipc.h#includesys/shm.hintshmget(key_tkey,intsize,intflag)参数说明:key:表示所创建或打开的共享内存的键size:表示共享内存区域的大小,指再创建一个新的共享内存时生效flag:表示调用函数的操作类型,也可用于设置共享内存的访问权限,两者通过逻辑或表示。shmget()不仅可以创建一个新的共享内存,也可以用于打开一个已存在的共享内存。(2)附加#includesys/type.h#includesys/ipv.h#includesys/shm.hvoid*shmat(intshmid,void*addr,intflag)参数说明:shmid:表示要附加的共享内存段的引用表示符flag:表示shmat函数的操作方式addr和flag共同决定共享内存区域要放附加到的地址值,相应约定(3)分离intshmdt(void*addr)此函数仅用于将共享内存区域与进程的地址空间分离,并不删除共享内存本身。addr为要分离的共享内存区域的指针。(4)共享内存的控制intshmctl(intshmid,intcmd,shmid_ds*buf)参数说明:shmid为共享内存的引用标示符buf是指向shmid_ds结构体的指针5.信号量信号量是一种用于多个进程访问共享资源进行控制的机制。每个信号量集都有一个与其相对应的结构,其中记录了信号量集的各种信息,该结构定义如下:structsemid_dssem结构记录了一个信号量的信息,其定义如下:structsem(1)信号量集的创建与打开#includesys/types.h#includesys/ipc.h#includesys/sem.hintsemget(key_tkey,intnsems,intsemflg);函数semget用于创建一个新的信号量集或打开一个已存在的信号量集。参数说明:key:要创建或要打开的信号量集的键nsems:要创建或者要访问的信号量集中信号量的数目semflg:指定不同的选项和权限位的标志。(2)对信号量的操作intsemop(intsemid,structsembufsemoparray[],unsignednsops);参数说明:semid:信号量集的引用IDsemoparray:是一个sembuf结构数组,sembuf结构用于指定用于semop函数所做操作,数组semoparray元素的个数由参数nops指出。(3)信号量的控制intsemctl(intsemid,intsemnum,intcmd,unionsemunarg)参数说明:semid为信号量集的引用标示符semnum指明某个特定信号量cmd表示抵用该函数希望执行的操作arg是semun的联合,该联合定义如下:unionsemun{intval;structsemid_ds*buf;ushortarray;}2015/1/15实验十五:网络编程实验:服务器与客户机实验十六:Makefile编程实验make:取代gcc编译多个c文件当运行make命令时,便会按着makefile提供的命令及顺序来完成编译实验十八:字符驱动编程实验Module形式驱动命令:insmod和modprobe1.加载:根据设备ID或/dev目录下的设备文件2.驱动module的初始化int(*open)(structinode*inode,structfile*filp)ssize_tread(structfile*filp,char_user*buf,size_tcount,loff_t*f_pos)LED,BELL控制:配置寄存器控制输入输出,数据寄存器控制高低电平。LED驱动:对led对应的GPIO口进行操作的函数,还包括设备操作的结构体盘1第一讲:1.Linux基础安装历史GNURichardStallmanGNU项目Linux的出现桌面、服务器Linux的开发模式:集市式的自由开发模式和大教堂式的开发模式2.Linux指的是什么Linux仅仅是一个内核,Linux以GNU为主提供了许多开源的工具采用shell命令行的管理节省了CPU一部分资源,稳定性,性能和效率3.Linux的基本目录bin:系统常用命令工具dev:系统设备目录home:系统主目录==documentandsettinglost+found:磁盘碎片文件proc:系统进程的镜像sbin:系统管理员常用命令tmp:系统临时文件boot:系统内核启动文件etc:保存当前系统配置信息lib:动态链接库库mnt:光驱软盘usr:应用程序opt:大型程序的安装目录文件系统的基本管理:三个基本命令:fdisk(内置命令)fdisk/dev/sda其中sda为设备mkfs建立文件系统(格式化)参数:-t文件系统类型指定要建立何种文件系统-V显示简要的使用方法mkfs–V–tmsdos–c/dev/hda5fsck检查与修复linux档案系统,可以同时检查一个或多个档案系统fsck–tmsdos–a/dev/hda5把所有硬件设备理解为文件把内存格式化:cddevlsram*(显示所有为内存的文件)mkfs-text3ram15cdmntmkdirmemlmount/dev/ram15mnt/meml学用文件管理命令cp拷贝echo“thisistestfile”test.log建立文件test.log内容为thisistestfileecho“thisistestfile”test.log建立两行相同内容文件moretest.log查看文件内容cptest.logtest.log.bakmvtest.log.baktest.log.bak.mv改名ln–stest.logtest.log.ln建立连接(软连接)ls–llntest.logtest.log.ln.2(硬连接占空间)mkdir–p111/222/333建立一连串子目录manmkdir查找帮助rm–rftest.log删除文件和目录du–h显示当前目录占用硬盘空间大小df–h显示当前分区占用硬盘空间M单位whereisls查找文件位置find命令详解:查找/tmp子目录下至少7天没访问过的文件find/tmp–atime7–print(print打印出来目录)查找/usr/src子目录中名字为core的文件并删除它们find/usr/src–namecore–execrm{}\;查找/home中以.jpg结尾并且长度超过100K的文件find/home–name“*.jpg”–size100ktar命令详解:(打包)tarcvfztest.tar.gz*(*为当前目录,即压缩包包含当前目录)(压缩)tarxvfz*.gz(解压缩)(c:建立一个新的文档,v:操作过程中显示流程信息,f:定义文档所在文件的名字,z:假设该文件已经使用gzip进行压缩)进程管理ps:STAT进程的状态:S进程休眠中RCPU正在处理的进程D不可中断休眠状态Z“昏迷进程”T正在被纠错程序跟踪或者已经被终止的进程ps–aux列出当前系统中所有的进程信息ps–aux|greprpc查找包含rpc的进程ps–aux|wc-l统计出有多少个进程在运行ls–l|wc–l统计多少个目录ps–aux|more查看进程top交互列出进程清单命令top进去后按k杀掉进程PID号输入9中断信号,15终止信号向某个进程发送消息命令killkill2059(kill-92059比较有把握)uame–a将当前Linux版本信息显示出来su–超级用户suchu888用户管理/home/etc/passwd/etc/shadow密码/etc/group硬件——操作系统——GUI/CLI(shell)——人useradd命令chmodchown命令ls–lping(显示-resr(s位权限))SUID(s代表执行时改为root用户权限,用完回到原来身份)chmod4777mkdir(赋予mkdir给s位)ls–lmkdirr读w写x可执行2015/1/161.I结点MBR启动块启动操作系统格式化:mkfs.ext3–b1024/dev/ram3(格式.ext3,大小1024)多少个数据块为一个结点mkfs.ext3–b1024–i1024/dev/ram3(1024个字节(数据块)10