随笔分类 - Operating Systems
Internals and Design Principles
摘要:在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作。串口编程特殊在于串 口通信时相关参数与属性的设置。嵌入式Linux的串口编程时应注意,若在根文件中没有串口设备文件,应使用mknod命令创建,这这里假设串口设备是 /dev/ttyS0,介绍一下串口的编程过程。#mknod /dev/ttyS0 c 4 641、打开串口打开串口设备文件的操作与普通文件的操作类似,都采用标准的I/O操作函数open()。fd = open("/dev/ttyS0",O_RDWR|O_NDELAY|O_NOCTTY); op
阅读全文
摘要:目录:1. Linux系统调用原理2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义系统调用1.系统调用原理系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待
阅读全文
摘要:共享内存是允许多个进程共享一块内存,由此来达到交换信息的进程通信机制;它很快没有中间介质,唯一的不足就是需要一定的同步机制控制多个进程对同一块内存的读/写,,它的原理如下:每个共享内存段都有一个shmind_ds结构,定义如下:struct shmid_ds{ struct ipc_perm shm_perm; int shm_segsz; ushort shm_lkcnt ; pid_t shm_cpid; pi...
阅读全文
摘要:守护进程常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,所以是在后台运行的,linux大部分服务器就是用守护进程实现的,守护进程的编程也不复杂,下面来说一下守护进程的特征、编程规则、出错处理等。守护进程的特征:1.所有守护进程都以超级用户(ID=0)的优先权运行;2。没有一个守护进程具有控制终端—终端名称设置为问号(?)、终端前台进程组I D设置为-1。缺少控制终端可能是精灵进程调用了s e t s i d的结果。3.除u p d a t e以外的所有精灵进程都是进程组的首进程,对话期的首进程,而且是这些进程组和对话期中的唯一进程。u p d a t e是它所在进程组和对话期(...
阅读全文
摘要:首先我得检讨一下自己,这几天有些颓呀,打不起精神,板子出了点问题,果真自学还是很困难呀,硬件方面难解决呀,理想与现实还是很有差距的,伤透了,凌乱了。 一直在理解进程间通信的问题。发现上次忽略了一个问题,就是命名管道,命名管道和一般的管道有一些显著的不同:1.FIFO是在文件系统中作为一个特殊的设备文件而存在的;2.不同祖先的进程之间可以通过管道共享数据;3.当共享管道的进程执行完所有的I/O操作后,FIFO将继续保存在文件系统中以便以后使用。 这里需要注意一下:管道只能由相关的进程使用,它们共同的祖先进程创建了管道,但是通过FIFO,不相关的进程也能交换数据。 FIFO的创建:#in...
阅读全文
摘要:MMU 是内存管理单元,在现代的处理器中扮演重要角色,它是CPU用来管理虚拟存储器、物理存储器的控制路线,先举个例子来说明一下MMU的相关概念: ---地址范围、虚拟地址映射为物理地址以及分页机制 地址范围是一个计算机上的一个程序能够产生地址的集合,这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (16E).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地...
阅读全文
摘要:管道是linux的一种通信方式,一种两个进程间进行单向通信的机制,它提供了简单的流控制机制,系统提供了pipe生成一个管道并返回两个描述符,一 个用来读管道,一个用来写管道,因此它们可以共享访问文件,这样每个管道就可以有很多个读进程和写进程,然而实际上进程不知道它正在读或写的是一个管道, 它有以下局限性: 由于管道传递数据的单向性,决定其使用的局限性:数据的单向流动;有亲缘关系的进程间的通信;没有名字;缓冲区大小受限制(传送的是无格式的字节流) 管道就是一个存在于内存的特殊文件,进程就是通过读写该文件进行通信的(内存中的某个页面作为数据缓冲区) 如果要建立两个进程的数据通路,首...
阅读全文
摘要:在之前大概的概述了进程之间的通信,下面笔者具体述说一下进程通信中最古老的一种通信方式之一---信号(Signals ),信号是用户进程之间通信和同步的一种原始机制,操作系统通过信号来通知进程系统中发生了某种预先规定好的事件(一组事件中的一个) 一、 在一个信号的生命周期中有两个阶段:生成和传送。当一个事件发生时,需要通知一个进程,这时生成一个信号。当进程识别出信号的到来,就采取适当的动作来传送或处理信号。在信号到来和进程对信号进行处理之间,信号在进程上挂起(pending)。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在..
阅读全文
摘要:ARM体系结构简介新一代的ARM9处理器,能达到两倍ARM7的处理能力,它们的区别如下:ARM微处理器的工作状态(可切换):第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令第二种为Thumb状态,此时处理16位的半字节对齐的Thumb指令ARM体系结构的存储方式大端格式:字数据的高字节存储在低地址,反之也是;小端格式:与上相反ARM微处理器模式(7种),这里笔者不详细说明了,一些资料上就就有解释说明。支持MMUMMU是内存管理单元,他把内存以“页(page)”为单位来进行处理。一页内存是指一个具有一定大小的连续的内存块,通常4096或8192B。操作系统为每个正在运行的程序建立并维
阅读全文
摘要:一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见。进程间通信有如下一些目的: 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。 共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。 进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,...
阅读全文
摘要:这篇文章主要是讲解到Linux进程的控制,包括程序和进程、守护进程、守护进程的出错处理。1、程序和进程 程序(program)是存放在磁盘文件中的可执行文件,程序的执行实例被称为进程(process)。init进程 每个linux进程都一定有一个唯一的数字标识符,称为进程ID(process ID),进程ID总是一非负整数,进程ID为1通常是init进程,在自举过程结束时由内核调用。init进程绝不会终止,它是一个普通的用户进程(与交换进程不同,它不是内核中的系统进程),但是它以超级用户特权运行。 Linux系统是一个多进程的系统,进程之间具有并行性、互不干扰的特点。linux中进程...
阅读全文
摘要:进程间通信就是在不同进程之间传播或交换信息,进程间控制信息的交换称为低级通信,进程间大批量数据的交换称为高级通信。进程通信分为3种:1.共享存储器系统:为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。2.消息传递系统:又分为直接通信方式、间接通信方式.3.管道通信系统:向管道提供输入的发送进程,以字符流方式将大量的数据送入管道,而接收进程从管道中接收数据消息缓冲队列通信机制: 由于消息缓冲机制中所使用的缓冲区为公用缓冲区,因此使用消息缓冲机制传送数据时,两通信进程必须满足如下条件:第一,在发送进程把写入消息的缓冲区挂入消息队列时,应禁...
阅读全文
摘要:在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程。但 是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行。因此线程被引入操作系统。在引入线程的操作系统中,线程是进程中的一个实体,是被 系统独立调度和分派的基本单位。它的执行环境很小,除了自身必需的堆栈、寄存器、优先级等私有资源外,共享其所属进程的资源。 线程与进程的比较: 线程是对于机器硬件的称呼,相当于生产线;而进程怎是对软件,即程序运行的程序,程序运行的多少叫做进程数。 进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程现在我告诉你如何查看进程和线程:1.打开任务管理器...
阅读全文
摘要:进程调度分为高级、中级、低级调度: 高级调度通常也称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,准备执行; 中级调度大多针对于分时系统,是按一定的算法在内存和外存之间进行进程对换,目的在于缓和内存的紧张; 低级调度用于将内存中就绪队列中的作业分配处理机,使其执行。 进程调度通常有以下两种方式:(1)非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。(2)剥夺方式:当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、...
阅读全文
摘要:程之间互相竞争某一个资源,这种关系就称为进程的互斥,也就是说对于某个系统资源,如果一个进程正在使用,其他的进程就必须等待其用完,不能同时使用。 并发进程使用共享资源时,除了竞争之外有协作,要利用互通消息的办法来控制执行速度,使相互协作的进程正确工作。进程之间的相互合作来完成某一任务,把这种关系称为进程的同步.操作系统中将一次只允许一个进程访问的资源称为临界资源。一个含有访问某一临界资源的循环进程可描述如下: while(TRUE) { entry section critical section exit section remainder section } 对进程的互斥和同步,操作...
阅读全文
摘要:进程的基本概念包括4个方面:1.程序的顺序执行和并发执行,这里包括3个方面,所谓程序的顺序执行是指该程序独占整个系统中的所有资源,处理机严格按照程序所规定的顺序进行操作,只有在前一个操作执行完后,才进行后继操作;多道程序设计的引入;并发执行即指一个程序段的执行尚未结束,另一个程序段的执行已经开始的执行方式。2.进程的定义和特征,定义: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。特征:结构特征、动态性、并发性、独立性、异步性3.进程的状态及其转换,基本状态:就绪状态、执行状态、阻塞状态状态转换:进程的3种基本状态及其转换如下图4。进程的结构,进程的实体:进程控制块(PCB)
阅读全文
摘要:来总结一下操作系统,也是常用的i一些知识。操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。 操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口;在这里介绍操作系统的目标和功能、操作系统的发展、主要的成就等。 目标和功能: 操作系统是管理...
阅读全文
摘要:这两天开始看了操作系统这本书,主要是因为学习linux时要对操作系统有一定的了解,而操作系统也是许多课程的基础,看了之后才明白好多都是计算机基础里面的内容,而且对一些系统的构成、处理器寄存器、指令的执行、中断、存储器的层次机构、I/O通信技术都有了一定的了解,这里需要总结一下计算机系统的一些基本知识。 计算机的基本构成可以如下图所示:而微型计算机的构成可表示如下:微型计算机系统的构成如下:计算机系统是以形式和计算机沟通的一种可视化的窗口。计算机系统是由硬件系统和软件系统两大部分组成的: 硬件系统一般指用电子器件和机电装置组成的计算机实体,是指物理上存在的机器部件。 一般地讲,软件系...
阅读全文