随笔分类 -  apue

摘要:静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。为了构造可执行文件,链接器必须完成两个主要任务: 1、符号解析:目标文件定义和引用符号,符号解析将每个符号引用刚好和一个符号定义联系起来 2、重定位:编译器和汇编器生成从地址0开始的代码和 阅读全文
posted @ 2017-07-07 14:33 合唱团abc 阅读(268) 评论(0) 推荐(0) 编辑
摘要:内核除了管理本身的内存之外,还必须管理用户空间中进程的内存,即进程地址空间。 一、内存描述符 内核使用内存描述符结构体表示进程的地址空间,该结构包含了和进程地址空间有关的全部信息,内存描述符由mm_struct结构体表示。 mmap和mm_rb这两个不同数据结构体描述的对象是相同的:该地址空间中的全 阅读全文
posted @ 2017-07-06 15:06 合唱团abc 阅读(210) 评论(0) 推荐(0) 编辑
摘要:伙伴算法: 1.将空闲页面分为m个组,第1组存储2^0个单位的内存块,,第2组存储2^1个单位的内存块,第3组存储2^2个单位的内存块,第4组存储2^3个单位的内存块,以此类推.直到m组. 2.每个组是一个链表,用于连接同等大小的内存块. 3.伙伴块的大小是相等的,并且第1块和第2块是伙伴,第三块和 阅读全文
posted @ 2017-07-04 15:26 合唱团abc 阅读(401) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/21/2602015.html http://blog.chinaunix.net/uid-20543672-id-3252604.html http://bbs.chinaunix.net/thr 阅读全文
posted @ 2014-08-01 16:42 合唱团abc 阅读(575) 评论(0) 推荐(0) 编辑
摘要:当一个进程终止时,内核就向其父进程发送SIGCHLD信号。因为子进程终止是个异步事件,所以这种信号也是内核向父进程发的异步通知。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用执行的函数。对于这种信号的系统默认动作是忽略它。调用wait或waitpid的进程发生的情况如下:1.如果所有子进... 阅读全文
posted @ 2014-07-28 18:18 合唱团abc 阅读(274) 评论(0) 推荐(0) 编辑
摘要:基本概念:在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。... 阅读全文
posted @ 2014-07-28 16:06 合唱团abc 阅读(342) 评论(0) 推荐(0) 编辑
摘要:#include pid_t fork(void)fork函数被调用一次,返回两次。子进程的返回值是0,父进程的返回值是子进程的进程id。fork函数调用一次却返回两次:向父进程返回子进程的ID,向子进程中返回0。这是因为父进程可能存在很多个子进程,所以必须通过这个返回的子进程ID来跟踪子进程;而子... 阅读全文
posted @ 2014-07-28 15:26 合唱团abc 阅读(338) 评论(0) 推荐(0) 编辑
摘要:进程标识符:非负整数ID为0的进程通常是是调度进程,常被称为交换进程。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程ID为1的进程是init进程,在自举过程结束时由内核调用,此进程负责在自举内核后启动一个UNIX系统,init通常读入与系统有关的初始化文件,并将系统引导到一个... 阅读全文
posted @ 2014-07-28 14:49 合唱团abc 阅读(200) 评论(0) 推荐(0) 编辑
摘要:转自:http://coolshell.cn/articles/5426.html基本命令:i → Insert 模式,按ESC回到 Normal 模式.x → 删当前光标所在的一个字符。:wq → 存盘 + 退出 (:w 存盘, :q 退出) (陈皓注::w 后可以跟文件名)dd → 删除当前行... 阅读全文
posted @ 2014-07-27 16:21 合唱团abc 阅读(129) 评论(0) 推荐(0) 编辑
摘要:具体内容见:http://coolshell.cn/articles/7965.html字符设备、块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备请求能满足用户的要求时,就返回请求的数据,如果不能就调用... 阅读全文
posted @ 2014-07-27 14:39 合唱团abc 阅读(244) 评论(0) 推荐(0) 编辑
摘要:当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中 执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用 户态)。... 阅读全文
posted @ 2014-07-24 20:23 合唱团abc 阅读(245) 评论(0) 推荐(0) 编辑
摘要:FIFO也称为有名管道,它是一种文件类型,是半双工的。FIFO简单理解,就是它能把两个不相关的进程联系起来,FIFO就像一个公共通道,解决了不同进程之间的“代沟”。普通的无名管道只能让相关的进程进行沟通(比如父shell和子shell之间)。创建FIFO类似于创建文件#include int mkf... 阅读全文
posted @ 2014-07-20 15:41 合唱团abc 阅读(231) 评论(0) 推荐(0) 编辑
摘要:Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(简称:fd,文件描述符).系统调用是如何完成一个I/O操作的呢? linux将内存分为内核... 阅读全文
posted @ 2014-07-20 14:59 合唱团abc 阅读(212) 评论(0) 推荐(0) 编辑
摘要:共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存... 阅读全文
posted @ 2014-07-19 15:58 合唱团abc 阅读(569) 评论(0) 推荐(0) 编辑
摘要:信号量是一个计数器,用于多进程对共享数据对象的访问为了获得共享资源,进程需要执行下列操作:1)测试控制该资源的信号量2)若此信号量为正,则进程可以使用该资源,进程将信号量减1,表示它使用了一个资源单位3)若此信号量为0,则进程进入休眠状态,直至信号量大于0,进程被唤醒后,返回至第一步信号量的分类在学... 阅读全文
posted @ 2014-07-19 15:57 合唱团abc 阅读(298) 评论(0) 推荐(0) 编辑
摘要:三种IPC的共同特征1.标识符和键每个内核中的IPC结构都用一个非负整数的标识符加以引用。当一个IPC结构被创建,以后又被删除时,与这种结构相关的标识符连续加1,直至达到一个整型数的最大值,然后又回转到0标识符是IPC对象的内部名,为使多个合作进程能够在同一IPC对象上会合,需要提供一个外部名,即键... 阅读全文
posted @ 2014-07-19 15:56 合唱团abc 阅读(295) 评论(0) 推荐(0) 编辑
摘要:管道是UNIX系统IPC最古老形式,并且所有UNIX系统都提供此种通信机制。管道由下面两种局限性:1)历史上,它们是半双工的(即数据只能在一个方向上流动)2)它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道管道由调用pipe... 阅读全文
posted @ 2014-07-19 15:49 合唱团abc 阅读(246) 评论(0) 推荐(0) 编辑
摘要:每个线程都有自己的信号屏蔽字,但是信号的处理是进程中所有线程共享的。进程中的信号是递送到单个线程的。线程中pthread_sigmask函数类似与进程的sigprocmask函数,可以用来阻塞信号。#include int pthread_sigmask(int how,const sigset_t... 阅读全文
posted @ 2014-07-17 15:54 合唱团abc 阅读(217) 评论(0) 推荐(0) 编辑
摘要:kill和raise函数#include int kill(pid_t pid,int signo);int raise(int signo);//两个函数返回值:若成功则返回0,若出错则返回-1kill函数将信号发送给进程或进程组,raise函数则允许进程向自身发送信号。调用raise(signo... 阅读全文
posted @ 2014-07-11 21:18 合唱团abc 阅读(313) 评论(0) 推荐(0) 编辑
摘要:一、信号概念信号都被定义为正整数,不存在编号为0的信号。信号是异步事件的经典实例。产生信号的事件对进程而言是随机出现的,进程不能简单地测试一个变量来判别是否出现了一个信号,而是必须告诉内核在此信号出现时,请执行下列操作。信号的处理有三种方式:1.忽略此信号。大多数信号都可使用这种方式进行处理,SIG... 阅读全文
posted @ 2014-07-10 20:19 合唱团abc 阅读(187) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示