Linux系统编程
文章平均质量分 69
中国程序狗
朽木自雕
展开
-
五、进程管理
进程:它由数据、资源、状态和一个虚拟计算机组成。进程ID每个进程都有一个唯一识别的进程ID,简称pid。 空闲进程:当没有其他进程运行时,内核所运行的进程它的pid为0。 在启动后内核第一个运行的进程为init进程,它的pid为1。 内核分配进程ID是以严格的线性函数方式进行的。如果上一个进程的ID为17则下一个分配就是18,若17进程以及不存在了,知道内核分配pid达到了/proc/sys原创 2017-09-04 23:00:35 · 291 阅读 · 0 评论 -
四、高级文件I/O
总览散布/聚集I/O:I/O在单次调用中同时对多个缓冲区做读取或者写入操作,适合于聚集多个不同数据结构进行统一的I/O操作。 epoll:poll()和select()的改进版,在一个程序需要处理数百个文件描述符的时候很有用。 内存映射I/O:将文件映射到内存,可以用简单的内存管理方式来处理文件,适合有特殊要求的I/O。 文件I/O提示:语序进程将文件I/O使用上的一些提示信息提供给内核;能提原创 2017-09-03 22:43:24 · 375 阅读 · 0 评论 -
六、高级进程管理
进程调度简称调度器,是把有限的处理器资源分配给进程的内核子系统。在作出决策的过程中,调度器既要最大化处理器效率,又要让多个进程同时运行、互不影响。就绪进程:该进程是非阻塞的。进行用户交互、大量读写文件、响应I/O和网路事件的进程会花费大量时间来等待资源可用,在相当长的事件内无法转换为就绪状态。 多任务操作系统分为两大类:协同式和抢占式。Linux实现了后一种形式的多任务。时间片Linux分配给原创 2017-09-08 15:04:59 · 404 阅读 · 0 评论 -
七、文件与目录管理
一切皆文件。每一个文件或者目录都有一个inode节点,通过stat结构体来管理。stat函数Unix提供了一组获取文件元数据的函数:#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *path, struct stat *buf);int fstat(iny fd, struc原创 2017-09-09 15:26:40 · 399 阅读 · 0 评论 -
八、内存管理
对一个进程来说,内存是最基本也是最重要的资源。存储器分配(allocation),内存操控(manipulation)和最后的内存释放(release)。进程地址空间Linux将它的物理内存虚拟化。进程不能直接在物理内存上寻址而是由Linux内核为每个进程维护一个特殊的虚拟地址空间。这个地址空间是线性的,从0开始。页和页面调度虚拟空间由许多页组成。系统的体系结构决定了页的大小,典型的页大小包原创 2017-09-10 13:34:51 · 563 阅读 · 0 评论 -
一、概述
一、系统编程1、系统调用(syscalls):为了从操作系统获得服务或者资源而从用户空间向内核(系统核心)发起的函数调用。2、调用系统调用:用户空间程序发送信号通知内核它希望调用一个系统调用。3、API应用程序接口:软件模块之间在源代码层交互的接口4、ABI应用程序二进制接口:在特定的架构上两个或者多个软件模块之间的二进制接口。二、文件系统1、普通文件:包含以线性字节数组方式组织的数据,通常称为字节原创 2017-09-01 12:35:49 · 254 阅读 · 0 评论 -
二、文件I/O
一、基础内核为每个进程维护了一个打开文件的列表,该表由文件描述符(file descriptors)称作fds的非负整数进行索引;表中每一项包含一个打开文件的信息其中包括指向文件备份inode的内存拷贝指针和元数据。子进程会默认获得父进程文件表的拷贝;文件描述符用int 类型表示默认从0开始;按照惯例进程至少会有三个文件描述符0是标准输入(stdin),1是标准输出(stdout),2是标准错误输出原创 2017-09-01 20:50:13 · 356 阅读 · 0 评论 -
三、缓冲输入输出
磁盘操作都是基于块进行的,所以请求以块大小的整数倍对齐地址时,I/O效率是最理想的。操作系统效率随系统调用次数的增多而急剧下降。例如每次读1个字节读1024次明显比一次读1024字节慢。如果每次不是块的整数倍效率也不是最理想的。用户-缓冲I/O轻量级I/O请求通常使用用户缓冲I/O,它是在用户空间而不是内核完成的。块大小:通常是512字节、1024字节等。所以大规模操作的时候我们需要设置为块的原创 2017-09-02 18:00:50 · 918 阅读 · 0 评论