《信号与系统》第二篇实验进阶_第1页
《信号与系统》第二篇实验进阶_第2页
《信号与系统》第二篇实验进阶_第3页
《信号与系统》第二篇实验进阶_第4页
《信号与系统》第二篇实验进阶_第5页
已阅读5页,还剩32页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

?信号与系统?第二篇实验进阶——深入Linux一.系统初始化开机启动流程开机效劳与守护进程自动执行程序3.自动执行程序开机启动时自动运行程序登录时自动运行程序退出系统时自动执行程序定期自动运行程序定时自动运行程序一次二.系统调用系统调用的实现过程系统调用的使用方法系统调用的添加步骤1.系统调用的实现过程Linux分为用户空间和内核空间两个层次Linux系统调用机制Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用用户通过系统调用命令在自己的应用程序中调用它们2.系统调用的使用方法系统调用与普通函数调用的区别系统调用:

核心态

操作系统核心提供普通的函数调用

用户态

函数库或用户自己提供3.系统调用的添加步骤编写系统调用效劳例程添加系统调用号修改系统调用表重新编译内核并测试三.进程/线程管理进程、进程组线程及线程分类多进程/线程编程1.进程/进程组Linux系统进程类型交互进程:Shell启动的进程,可在前台或后台运行批处理进程:进程序列,不与特定终端关联守护进程:后台效劳进程,独立于控制终端,常在系统引导装入时启动,在系统关闭时终止进程、进程组与会话的关系2.线程及线程分类

从开始,Linuxkernel才有真正的thread线程库叫NPTL(NativePOSIXThreadLibrary),采用1:1的线程模型,创立线程的效率非常高IBM的线程库叫NGPT〔NextGenerationPOSIXThreads〕,采用M:N模型,上下文切换很快,但增加了复杂性,会出现优先级反转等问题Linux线程分为核心态线程和用户态线程核心态线程没有独立的地址空间,只在内核空间运行

用户态线程在用户空间中实现核心态线程更利于并发使用多处理器的资源

用户态线程更多考虑上下文切换开销3.多进程/线程编程——进程fork()产生当前进程的拷贝3.多进程/线程编程——进程进程标识符管理intgetpid(); 取得当前进程的标识符〔进程ID〕。intgetppid(); 取得当前进程的父进程ID。intgetpgrp(); 取得当前进程的进程组标识符。intgetpgid(intpid);修改当前进程的进程组标识符为进程ID函数族exec():加载新的进程映像intexecl(); intexeclp(); intexecle();intexecv(); intexecve(); intexecvp();wait/waitpid函数pit_twait();pid_waitpid();3.多进程/线程编程——线程intpthread_create();

创立线程就是确定调用该线程函数的入口点,相当于fork函数。intpthread_join();

等待tid线程终止,相当于waitpid函数。pthread_tpthread_self();

取得自己的线程ID,相当于getpid函数。intpthread_detach();

将指定的线程脱离,脱离的线程类似于守护进程。voidpthread_exit();

终止线程的执行。四.进程间通信

管道通信消息队列共享内存

信号量套接字

1.管道通信无名管道用于具有亲缘关系进程间的通信管道是半双工的,数据只能单向流动〔双方通信需建立两个管道〕管道只能用于父子进程或兄弟进程之间管道对于管道两端的进程而言就是一个文件,并单独构成一种文件系统,存在于内存中写管道的内容添加在管道缓冲区的末尾,读管道那么从缓冲区头部读出有名管道在普通管道具备功能根底上,通过给管道命名的方法变成管道文件,允许无亲缘关系进程间通过访问管道文件进行通信2.消息队列

也叫报文队列,是消息的链接表有两种类型的消息队列:POSIX消息队列和系统V消息队列运行于同一台机器上的进程间通信,与管道类似可以用流管道或套接口方式取代系统V消息队列intmsgget(); 创立一个新队列或翻开一个存在的队列intmsgsnd(); 把消息添加到msgid代表的消息队列的末尾,消息的大小由msgsz指定。intmsgrcv(); 从msgid代表的消息队列中取走一个消息。intmsgctl(); 在由msgid标识的消息队列上执行cmd指定的操作。3.共享内存将同一块内存区映射到共享它的不同进程的地址空间中效率高:进程可以直接读写内存,不需任何数据拷贝,防止了内核空间与用户空间的切换内核未对共享内存的访问提供同步机制,需要依靠某种同步机制来同步对共享进程的访问POSIX共享内存通过用户空间挂载的tmpfs文件系统实现,持久化的API:shm_open()、mmap()、munmap()、shm_unlink()等SystemV共享内存由内核本身的tmpfs实现,非持久化的API:shmget()、shmat()、shmdt()、shmctl()等4.信号量

也称信号灯,用来协调不同进程间的数据对象提供对进程间共享资源访问控制的手段,用来保护共享资源还可用于进程间及同一进程不同线程间的进程同步两种类型二值信号灯:取值只能为0或1,类似于互斥锁计算信号灯:取值可以为任意非负值(受内核本身约束)POSIX信号量和SystemV信号量〔与共享内存的两种方式类似〕5.套接字

也称套接字,用于不同机器之间的进程间通信采用客户/效劳器模式,可以在本地单机上运行,也可以在网络中运行以文件的形式实现〔属于sockfs特殊文件系统〕套接字类型流式套接字:面向连接、可靠的全双工数据传输效劳数据报式套接字:无连接效劳原始套接字:允许对较低层协议进行直接访问五.内存管理

内存空间管理内存分页机制内存操作函数1.内存空间管理

Linux采用虚拟内存管理技术32位系统中虚拟地址空间的划分进程需要内存时获得的是虚拟的内存区域,只有当进程真正访问新获取的虚拟地址时,才会映射到实际的物理内存上2.内存分页机制

物理内存管理按地址分为三类:DMA使用、内核使用、高端内存物理内存分配函数:_alloc_pages()、_get_free_pages()、kmalloc()页表管理三级分页机制虚拟内存管理分为用户空间〔0~3GB〕和内核空间〔3~4GB〕0~896MB的空间一对一映射,剩下的动态映射3.内核操作函数

内核态操作函数kmalloc()/kfree()、vmalloc()/vfree()alloc_pages()/free_pages()、_get_free_pages()/__free_pages()copy_from_user()/copy_to_user()……用户态操作函数alloc()、calloc()、malloc()和relloc()mmap()/munmap()……六.设备管理

设备管理策略设备驱动原理编写设备驱动程序1.设备管理策略

早期:普通的带特殊属性的文件,由mknod命令创立,挂载于/dev下,由普通的文件系统统一管理浪费空间,管理混乱,设备检测存在额外开销:内核中引入了Devfs,所有需要的设备节点都将由内核自动创立同一个物理设备可能会被映射成不同的设备文件、主/辅设备号缺乏、额外的内核内存开销:提供了统一的内核设备模型,以支持智能电源管理、热插拔以及plugandplay的要求2.设备驱动原理

字符设备映射为chrdevs向量表中的device_struct大局部字符设备是数据通道,只能顺序存取直接对设备进行读写操作块设备填充blk_dev向量表中的blk_dev_struct利用系统内存作为缓冲区在设备与内存间传送数据网络设备类似于一个已挂载的块设备基于BSDUnix的Socket机制3.编写设备驱动程序

设备驱动程序的组成设备的翻开和释放:open()、release()设备的读写:read()、write()设备的控制:ioctl()设备的中断和轮询设备驱动的加载重编译、直接内核加载模块方式动态加载七.文件系统

文件系统层次结构文件系统格式虚拟文件系统proc

1.文件层次结构

Linux文件系统是一个树形结构,一切都从根目录(“/〞)开始Linux以“加载〞的方式把所有分区都放置在“根〞下指定的目录里Linux常用的文件系统ext、ext2、ext3、JFS、XFS、LinuxSwap、VFAT2.文件系统格式

EXT2文件系统GNU/Linux系统中标准的文件系统文件存取性能极好,对中小型文件尤为突出文件状态可能不一致,非日志文件系统EXT3文件系统日志式文件系统回溯追踪功能,平安性较高文件处理速度较慢EXT4文件系统支持1EB的文件系统性能、伸缩性和可靠性方面有改进LinuxSWAP专用于交换分区的swap文件系统通常情况下,swap的空间大小应是物理主存的倍3.虚拟文件系统proc

常驻虚拟内存,维持操作系统动态数据的伪文件系统可以在Linux内核空间和用户空间之间进行通信进程可用文件系统的方式、通过对虚拟文件的读写实现与内核内部数据结构的交互包含的内容系统/内核信息运行中的进程信息通过/proc与内核交互〔慎重使用〕八.内核编程

内核体系结构内核镜像与加载动态模块加载1.内核体系结构Linux内核体系结构Linux内核子系统及其关系2.内核镜像与加载

镜像文件的类型非压缩版本Vmlinux:可引导的、可压缩de内核镜像Image:经objcopy处理的、只包含二进制数据的内核代码压缩版本zImage:由vmlinux加上解压代码经gzip压缩而成bzImage:与zImage类似,但采用了不同的压缩算法,压缩率更高uImage:uboot专用的镜像文件,在zImage

温馨提示

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

评论

0/150

提交评论