![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统编程
文章平均质量分 89
乌溜_乌溜
biu biu biu
展开
-
Linux I/O多路复用
Linux I/O多路复用Linux中一切皆文件,不论是我们存储在磁盘上的字符文件,可执行文件还是我们的接入电脑的I/O设备等都被VFS抽象成了文件,比如标准输入设备默认是键盘,我们在操作标准输入设备的时候,其实操作的是默认打开的一个文件描述符是0的文件,而一切软件操作硬件都需要通过OS,而OS操作一切硬件都需要相应的驱动程序,这个驱动程序里配置了这个硬件的相应配置和使用方法。转载 2017-02-18 00:53:54 · 215 阅读 · 0 评论 -
Linux学习总结——linux I/O进阶
非阻塞I/O阻塞I/O对应于低速的系统调用,可能会使进程永远阻塞。非阻塞I/O可以使我们发出open、read、write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即错误返回,其表示该操作如果继续执行将会阻塞。对于一个给定的描述符,有两种为其指定非阻塞I/O的方法:(1) 如果是调用open获得文件描述符,则可指定O_NONBLOCK标志原创 2017-02-24 16:41:49 · 352 阅读 · 0 评论 -
Linux学习总结07—信号(signal, sigaction)
信号是软件中断,提供了一种处理异步事件的方法。每个信号的名字都以SIG字符开头,为正整型常量,定义在头文件中(实际上,实现将信号定义在内核头文件中,又包含该内核头文件,如:Linux 3.2.0将信号定义在中,FreeBSD 8.0将信号定义在中)。 信号有3种处理方式:(1) 忽略此信号。大多数信号都使用这种方式处理。但是有两种信号不能被忽略:SIGKILL和SIGS原创 2017-02-24 15:17:35 · 587 阅读 · 0 评论 -
常用服务器模型
1) 迭代性服务器 迭代性服务器,在开源社区的代表之作是Apache Web服务器。该模型中,存在唯一的侦听进程,侦听进程accept新的链接之后,通过fork的方式,派生出一个新的进程来为这个请求进行专门的服务,直至请求全部处理完成,被fork的进程也会自动退出,在服务过程中被占用的各种资源得以释放。 这种服务器开发模型的优缺点分别如下:原创 2017-02-24 14:17:51 · 639 阅读 · 0 评论 -
Linux并发服务器实现
如下介绍一个并发回射客户端/服务器的雏形,所谓回射:就是客户端输入一条数据,服务器端读取并显示,然后服务器端再把刚读取的信息发送回客户端进行显示。示意图如下: 所谓并发服务器:就是一个服务器可以同时为多个连入的客户端提供服务,示意图如下: 如下主要介绍两种实现并发回射服务器的方式,一种是通过子进程方式实现并发,一种是通过I/O多路转接实现并发。转载 2017-02-24 12:09:34 · 17685 阅读 · 0 评论 -
linux知识——64种信号产生的原因
1) SIGHUP:当用户退出shell时,由该shell启动的所有进程将收到这个信号,默认动作为终止进程2)SIGINT:当用户按下了组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为终止里程。3)SIGQUIT:当用户按下组合键时产生该信号,用户终端向正在运行中的由该终端启动的程序发出些信号。默认动作为终止进程。4)SIGILL:CPU检测到某进程执行原创 2017-02-14 19:34:02 · 3033 阅读 · 0 评论 -
Linux学习总结02——内存管理——Linux在X86上的虚拟内存管理
Linux内存管理之二:Linux在X86上的虚拟内存管理本文档来自网络,并稍有改动。前言Linux支持很多硬件运行平台,常用的有:Intel X86,Alpha,Sparc等。对于不能够通用的一些功能,Linux必须依据硬件平台的特点来具体实现。本文的目的是简要探讨Linux在X86保护模式上如何实现虚拟内存管理功能。为简化和方便叙述,本文做如下限定:X86处理器为80486和其后的转载 2017-02-14 19:19:44 · 326 阅读 · 0 评论 -
Linux学习总结01——内存管理——基本概念篇
Linux内存管理:基本概念篇物理地址、线性地址(虚拟地址)和逻辑地址;阐述段式管理和页式管理基本概念;Linux操作系统内存管理和虚拟内存概念;为内核开发做一个基础铺垫。 内存是linux内核所管理的最重要的资源之一,内存管理子系统是操作系统中最重要的部分之一。对与立志从事内核开发的工程师来说,熟悉linux的内存管理系统非常重要。1、物理地址、线性地址(虚拟地址)和逻辑地址原创 2017-02-14 19:01:05 · 565 阅读 · 0 评论 -
Linux学习笔记06——进程关系
进程关系进程组进程组是一个或多个进程的集合。通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID。每个进程组有一个组长进程,该组长进程的ID等于进程组ID。从进程组创建开始到最后一个进程离开为止的时间称为进程组的生命周期。#include pid_t getpgrp(void);返回值:调用原创 2017-02-18 14:51:26 · 202 阅读 · 0 评论 -
Linux学习总结05——进程环境
进程环境main启动当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序将此启动例程指定为程序的起始地址,接着启动例程从内核中取出命令行参数和环境变量值,然后执行main函数。 进程终止使进程终止的方式有8种,其中5种为正常终止,3种为异常终止:终止类型说明正常终止(1)转载 2017-02-18 14:02:36 · 321 阅读 · 0 评论 -
Linux学习总结04——文件和目录
文件描述符在内核中,所有打开的文件都使用文件描述符(一个非负整数)标记。文件描述符的变化范围是0~OPEN_MAX – 1。早期的unix系统中,每个进程最多可以同时打开20个文件,就是说文件描述符的范围为0~19,但是现在很多系统将其增加到0~63。#include int open(const char* path, int oflag, ...);int原创 2017-02-18 11:04:05 · 423 阅读 · 0 评论 -
linux学习总结03——Linux文件IO
这篇文章写的比较全面,也浅显易懂,备份下。转载自:http://blog.chinaunix.net/uid-27105712-id-3270102.html在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内转载 2017-02-18 10:20:07 · 226 阅读 · 0 评论 -
Linux学习总结08——进程间通信(pipe, fifo)
管道管道是Unix系统IPC的最古老方式,有两种局限性:(1) 历史上它们是半双工的(即数据只能在一个方向上流动),虽然现在某些系统提供了全双工管道,但是为了可移植性,不要抱有绝对的全双工假设。(2) 管道只能在具有公共祖先的两个进程之间使用(一般都是用于父子进程之间)。管道是通过调用pipe函数创建的:#include int pi原创 2017-02-24 17:58:38 · 310 阅读 · 0 评论