02 2017 档案
摘要:父子进程的资源访问 6.1.内存资源 6.2.文件资源 案例: procmem.c 说明:子进程克隆整个内存区域(全局区,局部区,堆等整个内存区域), 子进程的虚拟地址重新映射。。。。(映射是独立的) 但内存区域指向不同的物理空间 尽管克隆,但内存独立. 不能相互访问. 多进程实现多任务,进程之间的
阅读全文
摘要:1.父子进程的关系 独立的两个进程 互为父子关系 2.问题: 2.1.父进程先结束? 子进程就依托根进程init:孤儿进程 孤儿进程没有任何危害. 2.2.子进程先结束? 子进程会成为僵死进程. 僵死进程表面上不占用内存,CPU.但在进程任务管理树占用一个节点. 僵死进程造成进程名额资源浪费.(假如
阅读全文
摘要:fork pid_t fork(); //1.创建进程 //2.新进程的代码是什么:克隆父进程的代码.而且克隆了执行的位置. //3.在子进程不调用fork所以返回值=0; //4.父子进程同时执行. 3.应用进程 使用fork创建新的进程有什么应用价值呢? 使用fork实现多任务.(Unix系统本
阅读全文
摘要:exec系列函数: execl execlp 重点介绍 替换。。。。当前进程的代码空间中的代码数据 函数本身不创建新的进程。 int execl(const char*path,const char *arg,....);//变长参数 第一个参数:替换的程序, 第二个参数....:命令行 命令行格式
阅读全文
摘要:poen函数允许一个程序将另一个程序作为新进程来启动,并可以传递数据给它或者通过它接收数据. 二、使用popen函数 1、popen函数和pclose函数介绍 有静就有动,有开就有关,与此相同,与popen函数相对应的函数是pclose函数,它们的原型如下: #include <stdio.h> F
阅读全文
摘要:int system(const char*filename); 建立独立进程,拥有独立的代码空间,内存空间 等待新的进程执行完毕,system才返回.(阻塞) 案例:test.c 和 system.c 使用system调用一个程序。 test.c代码: system.c代码: 1.观察进程ID。
阅读全文
摘要:pread/pwrite 原子性地定位搜索(seek)和执行I/O: (Single UNIX Specification 的 XSI扩展) #include ssize_t pread(int filedes, void *buf, size_t nbytes, off_t offset); 返回
阅读全文
摘要:所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 O_AP
阅读全文
摘要:1.认识内核对象不允许访问内核设备和内存, 但可以通过内核系统函数去访问. 对每个内核对象进行编号ID. 如果访问内核对象,只能通过ID. 编程模型: 申请得到一个ID 在内核系统函数中使用ID得到对应内核对象数据 2.怎么访问文件 使用函数,传递一个文件,系统打开文件,加载文件数据, 返回一个ID
阅读全文
摘要:1.使用main的参数 int main(int args,char *argv[],char **arge) { } 命令行参数argv与环境行arge都是字符串数组. 约定:最后一个字符串是NULL或者0 2.在C的标准库提供:外部变量 extern char **environ; 3.修改获取
阅读全文
摘要:头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>定义函数: int open(const char * pathname, int flags); int open(const char * pathname, i
阅读全文
摘要:mmap(分配)/unmap(释放) 功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻
阅读全文
摘要:Linux进程级的内存管理 首先,我们可以了解一下一个进程的内核空间: 可以看到一个进程地址空间的主要成分为: 正文:这是整个用户空间的最低地址部分,存放的是指令(也就是程序所编译成的可执行机器码) 初始化数据段:这里存放的是初始化过的全局变量 未初始化数据段:这里存放的是未初始化的全局变量 Hea
阅读全文
摘要:第一层理解 1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内
阅读全文
摘要:背景: 使用静态库完成如下程序: 输入一个菱形半径,打印菱形。 》main.c 输入整数封装成IOTool 》iotool.c 菱形的打印封装成Graphics 》graphics.c 计划: 1.实现输入 2.实现菱形 3.编译静态库 4.调用静态库 iotool.c代码 graphics.c代码
阅读全文
摘要:首先由一个程序引入话题: 程序的输出结果为: sizeof(st1) is 12 sizeof(st2) is 8 问题出来了,这两个一样的结构体,为什么sizeof的时候大小不一样呢? 本文的主要目的就是解释明白这一问题。 内存对齐,正是因为内存对齐的影响,导致结果不同。 对于大多数的程序员来说,
阅读全文