操作系统
文章平均质量分 83
Li-eng
个人blog:www.lienguang.com
展开
-
【Linux系列】多路复用IO,从底层理解select
网络数据是怎么接收到的网卡收到网线传送过来的数据,经过硬件电路传送到内存,将数据写在内存的某个地址中。网卡将数据写入内存后,网卡产生一个中断,通过总线把电信号发送给中断控制器。中断控制器把中断发送给处理器,也就是通过电信号给处理器特定的管脚发送一个高电平。处理器立即停止它正在做的事,然后跳转到内存中预定义的位置开始执行那里的代码,这个预定义的位置由内核设置的,是中断处理程序的入口点。对于每个中断线,处理器会跳到对应的一个唯一的位置,这样,内核就知道接收中断的IRQ号,然后调用函数do_IRQ(),原创 2021-03-16 15:31:47 · 270 阅读 · 0 评论 -
【Linux系列】从本质上理解五种IO模型的区别
IO模型输入操作通常包括两个不同的阶段:(1)等待数据准备好;(2)从内核向进程复制数据。对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。根据各自的特性不同,IO模型被分为阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO五类。最主要的两个区别就是阻塞与非阻塞,同步与异步。阻塞与非阻塞阻塞与非阻塞最主要的区别就是程序在等待调用结果时的状态。阻塞:为了完成一个功能发起调原创 2021-03-16 14:50:58 · 258 阅读 · 0 评论 -
【UNIX环境高级编程】—《文件IO》读书笔记
【UNIX环境高级编程】——《文件IO》读书笔记UNIX环境下的文件共享文件描述符用来表征一个文件,但是为什么操作系统要用这么一个整数来表征一个文件呢?这就操作系统底层实现有莫大的关系。 在进程PCB中有着这么一个部分,IO状态信息,说的再具体点,在PCB中存在着一张表,我们可以叫它文件描述符表也可以叫做打开文件描述符表,这张表每个进程都会有且为进程独有,所以它是进程级的。这张表上的每一个表项都有两个部分组成,文件描述符标志以及一个文件指针。其中文件描述符标志也就是我们所使用的文件描述符fd,当然我原创 2021-03-16 00:06:59 · 121 阅读 · 0 评论 -
【Linux系列】深入理解task_struct结构体
什么是进程进程是分配系统资源的单位。当一个程序被加载到内存之后并为他分配一个PCB(进程控制块),这时候就称为进程了。在linux中PCB就是一个名字叫做task_struct的结构体,我们叫他”进程描述符”。它里面有进程执行的所有信息,所以CPU对task_struct进行管理就相当于在对进程进行管理。PCB叫做进程控制块,它用来维护进程相关的信息,每个进程都有一个PCB。task_structtask_struct是Linux内核的一种数据结构,它会被装载到RAM里并包含进程的信息。每个进程都把它原创 2021-03-15 14:34:29 · 1719 阅读 · 0 评论 -
C++/Linux 知识学习框图总结
原创 2021-03-14 22:53:50 · 105 阅读 · 0 评论 -
【Linux系列】再谈僵尸进程的产生与避免
僵尸进程是怎么产生的首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每个终止子进程保存了一定量的信息。这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间。所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息。一个进程执行了exit系统调用退出,其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态),另外子进程退出的时候会向其父进程发送SIGCHLD信号,父进程默认忽略SIGCHLD信号不进行处理,那原创 2021-03-09 20:22:59 · 467 阅读 · 0 评论 -
【操作系统原理】学习笔记-线程相关
多线程多线程是指操作系统允许在单个进程内有多个并发执行路径,一个并发执行路径又被成为一个线程。早期各个版本的操作系统他们支持多用户进程,即允许一个任务内拥有多个进程进行并发处理,但是每个进程内部只允许有一条执行路径,也就是只允许拥有一个线程,而如今的现代操作系统中绝大多数操作系统支持多线程方法,其中的差别可用下图表示:在多线程的基础上程序并发将会更容易实现,因为线程是一个轻量级进程因此切换和调度的消耗会更少,并且同一进程内的线程之间共享虚拟地址空间,因此通讯会更加方便。在多线程环境中,进程定义为资源分原创 2021-02-22 21:45:24 · 195 阅读 · 0 评论 -
【操作系统原理】学习笔记-进程相关
进程和线程进程什么是进程 在操作系统中,操作系统需要对各种资源进行管理,大概可以分为以下几类:内存,文件,磁盘,进程。所谓进程就是操作系统有序管理应用程序的执行的方式,来保证以下几点: 1、所有资源对多个应用程序是可用的。 2、物理处理器在多个应用程序中切换,保证所有程序都在执行中。 3、处理器和I/O设备都能得到充分的利用。 因此所有现代操作系统都依赖于一个模型,在该模型中,一个应用程序对应一个或多个进程。进程的定义有以下几条: 1、一个正在执行的程序。 2、一个正在计算机原创 2021-02-22 14:00:38 · 1550 阅读 · 5 评论 -
【网络系列】传输层协议UDP头部解析、网络通信编程实现
传输层协议传输层负责端与端之间的数据传输,其中典型协议为TCP协议和UDP协议。 TCP协议是TCP/IP协议栈中的传输层的典型协议,叫传输控制协议,面向连接,可靠传输,提供字节流服务。 UDP协议是TCP/IP协议栈中的传输层的典型协议,叫用户数据报协议,无连接,不可靠,提供数据报传输服务。UDP协议协议字段 协议字段都包含在UDP协议数据报的报头中,每次发送数据都会将这些信息和数据一起发出。 1、16位源端口:标识数据从哪个进程来。 2、16位目的端口:描述数据到哪个进程去。原创 2021-01-31 21:01:49 · 813 阅读 · 0 评论 -
【Linux系列】到底什么是文件描述符?
文件描述符文件描述符已经不陌生了,在一个进程中一个打开的文件就是用一个文件描述符所表征的,可以看作是一个句柄,就是所谓的遥控器。但是这个遥控器到底怎么来控制具体的文件呢?接下来会依此讲解文件描述符背后的在UNIX环境下实现相关的数据结构。UNIX环境下的文件共享文件描述符用来表征一个文件,在进程PCB中有着这么一个部分,IO状态信息,说的再具体点,在PCB中存在着一张表,我们可以叫它文件描述符表,也可以叫做打开文件描述符表,这张表每个进程都会有且为进程独有,所以它是进程级的。这张表上的每一个表项都由两原创 2021-01-01 19:05:22 · 4431 阅读 · 2 评论 -
【Linux系列】进程PCB控制管理详解
进程概念1.什么是进程2.PCB3.进程查看4.进程创建5.进程状态6.进程优先级7.环境变量8.程序地址空间1.什么是进程进程:进行中的程序。是操作系统分配资源的基本单位,计算机系统通过一个叫进程控制块的东西进行描述和组织一个个进程,也就是task_struct结构体,简称PCB。而在Linux上PCB是一个结构体,这个结构体中保存着一个个进程的信息。因此对于操作系统来说一个PCB就是一个进程,系统在管理进程实际上就是在管理一个个PCB,这是系统管理进程的媒介。2.PCB一般情况下,PCB中包含4原创 2020-12-31 17:09:24 · 2522 阅读 · 0 评论 -
【Linux系列】gdb调试工具的使用以及核心转储文件
gdb一、基本指令最好在编译时加上-g选项生成Debug版本,否则会导致gdb部分指令无法使用。1、gdb 可执行文件 进入gdb调试。2、break + 行号/函数名 打断点。3、info break 查看断点信息。4、delte + 断点编号 删除断点。5、run让程序从头开始运行,遇到断点停止。6、continue让程序继续运行。当程序遇到断点停止想要继续运行时使用continue,使用run会让程序重新开始运行。7、print 变量名 查看当前状态下变量信息。8、list 查看当原创 2020-12-31 14:40:10 · 1407 阅读 · 0 评论 -
【Linux系列】Linux下信号详解-产生,注册,注销以及处理机制
1.信号是什么2.信号的种类3.信号的产生4.信号的注册5.信号的注销6.信号的阻塞7.信号的处理方式原创 2020-11-29 16:52:33 · 1332 阅读 · 0 评论 -
【Linux系列】线程控制管理、线程安全-同步与互斥
Linux下的多线程一、线程的概念1.什么是线程?线程就是进程中的一条执行流,是cpu调度的基本单位(而进程是cpu资源分配的基本单位),在linux下是一个轻量级进程。linux下的线程是通过pcb实现,是程序运行的动态描述,通过这个描述 操作系统实现程序运行的调度,一个进程中可以有多个线程,这些线程共享进程中大部分资源,相较于传统pcb更加轻量化,因此也成为轻量级进程。2.线程的独有与共享线程共享的环境包括:进程虚拟地址空间(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文原创 2020-11-25 18:29:40 · 1004 阅读 · 0 评论 -
【Linux系列】进程间通信方式-共享内存、消息队列、信号量
进程间通信(二)——共享内存,消息队列,信号量共享内存消息队列信号量原创 2020-11-17 18:23:49 · 949 阅读 · 0 评论 -
【Linux系列】进程间通信方式-管道详解
进程间通信(一)简而言之就是操作系统为上层提供的进程间通信的方式为什么要操作系统提供呢?每个进程具有独立性,每个进程访问的都是自己的虚拟地址空间的虚拟地址因此需要操作系统提供一个进程间都可访问的区域来实现通信因为应用场景不同,因此提供的方式也多种多样文章目录进程间通信(一)管道1. 匿名管道2.管道的特性3.命名管道4.命名管道的特性管道管道 :用于实现进程间的数据传输功能本质就是内核中的一块缓冲区管道的种类 :匿名管道和命名管道1. 匿名管道:概念:在内核中申请一块固定原创 2020-11-14 19:36:04 · 1145 阅读 · 0 评论