Linux
文章平均质量分 85
Scl_Diligent
平凡
展开
-
线程池:一个锁,两个条件变量,循环队列
线程池,事先创建几个线程,不停取任务,如果没有任务休眠,省去了不停的创建线程销毁销毁线程的事件和资源。原创 2023-12-26 17:36:55 · 465 阅读 · 1 评论 -
I/O复用
poll、epoll、select原创 2020-04-27 12:36:38 · 311 阅读 · 0 评论 -
系统编程——进程创建fork()函数
fork()函数:创建一个子进程(拷贝父进程的PCB、页表,然后修改PCB中的部分数据);声明:#include <unistd.h>pid_t fork(void);返回值: 原来进程返回新进程PID,新进程返回0;出错返回 -1 ;fork函数测试(fork之后父子进程互为独立进程,操作系统决定谁先执行):运行结果:父子进程关...原创 2018-11-14 13:06:13 · 337 阅读 · 0 评论 -
虚拟地址空间
在进程创建的时候,操作系统会为之分配4G大小的地址空间(32位的CPU的寻址空间是4G)。4G虚拟地址空间,分为两部分:用户空间和内核空间(Linux:3/1; windows:2/2)。以Linux为例,如图,3G的用户空间(User Space)、1G的内核空间。保留区(128m)的空间是不允许访问的,意在防止操作干扰和页的加载约定。.text段(指令代码段):存放的是程序指令(函...原创 2018-11-19 18:32:23 · 341 阅读 · 0 评论 -
进程间通讯 --- 管道(半双工通信)
管道:一个进程输出数据到另一个进程数据输入的通道。(半双工通信:同一时间,只能一端读另一端写,因为只有一条信道)有名管道(命令管道):在磁盘上会存在一个管道文件标识,但管道文件不占用磁盘block空间,数据会缓存在内存上。可应用于同一台主机上的有权限访问的任意n个进程间通讯。(必须有一对读写进程)有名管道使用:创建管道文件: 命令 mkfifo 文件名...原创 2019-03-05 13:53:02 · 956 阅读 · 0 评论 -
进程间通讯 --- 消息队列、信号量、共享内存(XSI IPC结构)
XSI IPC结构:源自System V UNIX(1983)的IPC功能(为了满足进程间通信,首次引入三中进程间通信机制(IPC):消息队列、信号量、共享内存)。IPC结构(消息队列、信号量、共享内存)通过共同的IPC资源通信,而IPC资源是通过内核中IPC结构的一个非整数的标识符来区分的,类似于管道通信的文件描述符(XSI IPC不使用文件系统名字空间,构造了自己的名字空间)。但是IPC...原创 2019-03-13 12:10:13 · 393 阅读 · 1 评论 -
深度分析进程创建过程(linux 2.4) —— 《LINUX内核源代码情景分析》阅读笔记
进程:实际上是复制出来的,第一个进程是系统固有的(在内核引导下完成初始化),所有其他进程都是其“后代”。创建:Linux提供三个系统调用函数pid_t fork(void);是全部复制,父进程的资源全部通过数据结构复制给子进程int _clone(int(*fn)(void *arg), void * child_stack, int flags, void *arg);选择复制,...原创 2019-07-24 20:43:03 · 651 阅读 · 0 评论 -
寻址方式
Intel X86 CPU 系列的寻址方式:处理器:8086、8088、80186、80286、80386、80486 以及后面的各种型号的Pentium芯片。8086和8088 是16 位(算术逻辑单元)处理器,从80386开始为32位处理器。80286仍为16位处理器,但其寻址方式开始从“实地址模式”到“保护模式”过渡。8086 是16位CPU,1M(2^20)字节内存地址(2...原创 2019-09-28 10:49:25 · 671 阅读 · 0 评论 -
传统的操作系统中“线程”和“进程”的区别,Linux中独特线程机制
操作系统引入进程是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量。而引入线程,则是为了减少程序在并发执行时所付出的时间和空间开销,使操作系统有更好的并发性。传统的操作系统(Microsoft Windows或 Sun Solaris等)中线程和进程的比较:“基本单位”不同: 进程是资源分配的基本单位,是系统进行资源分配和调度的一个独立单元,拥有独立的资源。但是进程调度和创建或...原创 2019-10-06 00:37:48 · 326 阅读 · 0 评论