1 程序员JT

尚未进行身份认证

专注于 C/C++、Linux

等级
TA的排名 3w+

Linux进程管理(四)进程调度之抢占式调度

Linux进程管理(四)进程调度之抢占式调度文章目录Linux进程管理(四)进程调度之抢占式调度一、抢占式调度二、设置需要重新调度的标志的时机(TIF_NEED_RESCHED)三、进程抢占的时机3.1 用户态的抢占时机3.2 内核态的抢占时机四、总结上篇文章我们将了内核调度分为主动调度和抢占式调度,主动调度我们已经讲解过了,这篇文章我们来讲解一下抢占式调度一、抢占式调度我们说过,进程真正...

2019-11-07 14:44:36

Linux进程管理(三)进程调度之主动调度

Linux进程管理(三)进程调度之主动调度文章目录Linux进程管理(三)进程调度之主动调度一、抢占式调度和主动调度二、主动调度的发生的情况三、schedule 函数四、总结在上一篇文章中,我们讲了Linux进程调度的总体内容,接下来的两篇文章我们将来讨论进程调度具体是什么时候发生的一、抢占式调度和主动调度前面我们说过,进程的切换总是通过 shedule 函数发生的,而 schedule ...

2019-11-06 14:04:40

Linux进程管理(二)进程调度

Linux进程管理(二)进程调度文章目录Linux进程管理(二)进程调度一、进程调度解决什么问题?二、进程调度整体框架三、优先级与调度策略四、调度类五、运行队列和调度实体六、FIFO 和 RR 调度算法七、完全公平调度算法(CFS)八、总结一、进程调度解决什么问题?我们在使用电脑的时候,比如打开一个视频剪辑器,一个文本编辑器,可以认为它们都是一个进程。假如CPU是单核的,那么在同一时间只能运...

2019-11-03 20:59:48

Linux进程管理(一)进程数据结构

Linux进程管理(一)进程数据结构文章目录Linux进程管理(一)进程数据结构双向链表任务ID信号处理进程状态进程调度运行统计信息进程亲缘关系内存管理文件与文件系统进程内核栈栈结构current宏Linux内核中使用 task_struct 结构来表示一个进程,这个结构体保存了进程的所有信息,所以它非常庞大,在讲解Linux内核的进程管理,我们有必要先分析这个 task_struct 中的各...

2019-10-27 16:59:46

linux图像显示(三)使用libjpg处理jpg图片

linux图像显示linux图像显示(一)framebuffer操作linux图像显示(二)bmp图片linux图像显示(三)使用libjpg处理jpg图片linux图像显示(四)使用libpng处理png图片linux图像显示(五)使用freetype处理矢量字体移植libjpg移植libjpeg到arm板上,我们主要是要得到动态链接库.so,静态链接库.a,头...

2018-12-09 15:43:48

Linux进程间通讯(五)信号量

Linux进程间通讯(五)信号量文章目录Linux进程间通讯(五)信号量一、信号量集的创建二、信号量的设置三、信号量的PV操作四、SEM_UNDO标志的含义五、总结一、信号量集的创建信号量集的创建需要通过系统调用 semget,其定义如下(这里需要注意的是,semget创建的是一个信号量集合,也就是一个集合是可以包含多个信号量的)SYSCALL_DEFINE3(semget, key_t,...

2019-10-22 14:15:14

Linux进程间通讯(四)共享内存

Linux进程间通讯(四)共享内存文章目录Linux进程间通讯(四)共享内存一、IPC总览三、将共享内存映射到进程虚拟地址空间四、访问共享内存五、总结一、IPC总览在内核中,对于共享内存、消息队列、信号量都是使用统一的机制管理起来的,都叫做 ipcxxx为了维护这三种进程间通讯的机制,内核定义了一个三项的数组,如下struct ipc_namespace {...... struct...

2019-10-21 20:02:49

Linux进程间通讯(三)管道

Linux进程间通讯(三)管道文章目录Linux进程间通讯(三)管道一、匿名管道二、有名管道三、总结一、匿名管道匿名管道通过系统调用 pipe 创建,其定义如下int pipe(int fd[2])通过这个系统调用,可以在内核中创建一个管道,返回两个文件描述符,表示管道的两端,一个用于读,一个用于写下面看一看内核时如何实现的SYSCALL_DEFINE1(pipe, int _...

2019-10-19 17:25:23

Linux进程间通讯(二)信号(下)

Linux进程间通讯(二)信号(下)文章目录Linux进程间通讯(二)信号(下)一、信号的发送二、信号的处理三、总结上一篇文章讲解了信号的注册,这篇文件讲解信号的发送和信号的处理一、信号的发送我们可以直接通过 kill 或者 sigqueu 系统调用,给某个进程发送信号,也可以通过 tkill 或者 tgkill 给某个线程发送信号。虽然方法很多,但是最终调用的都是 do_send_sig...

2019-10-18 21:30:25

Linux进程间通讯(一)信号(上)

Linux进程间通讯(一) 信号(上)文章目录Linux进程间通讯(一) 信号(上)一、信号概述二、注册信号三、总结一、信号概述在Linux中,当遇到某些紧急的情况,可以给进程发送信号,紧急处理一些事情在Linux中,定义了许多信号,可以使用 kill -l 命令来查看# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4...

2019-10-18 18:50:09

Linux文件系统(四)文件缓存

Linux文件系统(四)文件缓存文章目录Linux文件系统(四)文件缓存一、系统调用层和虚拟文件系统层二、ext4 文件系统层2.1 直接读写2.2 带缓存的读写三、总结前几篇文章讲解了文件系统的挂载和文件的打开,这篇文章讲解文件的读写一、系统调用层和虚拟文件系统层文件的读写就是通过调用 read、write 系统调用来实现的,由于读写的实现过程很多逻辑都是相似的,所以两部分放在一起讨论...

2019-10-16 19:30:35

Linux文件系统(三)虚拟文件系统

Linux虚拟文件系统文章目录Linux虚拟文件系统一、文件系统框架二、挂载文件系统三、打开文件一、文件系统框架文件系统需要许多层的组件一起协作,具体怎么协作,下面来看一看在应用层,进程操作文件可以通过 open、read、write 等系统调用在内核,每个进程都需要对其打开的文件,维护一定的数据结构在内核,整个系统打开的文件,也需要维护一定的数据结构Linux可以支持多大数十种...

2019-10-15 17:27:33

Linux文件系统(二)磁盘文件系统

磁盘文件系统文章目录磁盘文件系统一、inode与块的存储二、inode 位图和块位图三、文件系统的格式四、目录的存储形式五、软链接和硬链接的存储格式六、总结我们常见的磁盘长下面这样子,左边中间圆是磁盘的盘片,右边是抽象出来的图每一层有多个磁道,每个磁道有多个扇区,每个扇区大小为512个字节文件系统是安装在磁盘之上的,本文将讲解Linux主流的文件系统 —— ext系列的文件系统格式一、...

2019-10-13 12:43:24

Linux文件系统(一)文件系统概述

Linux文件系统文章目录Linux文件系统一、文件系统的功能规划二、文件系统相关的命令三、文件系统相关的调用四、总结一、文件系统的功能规划文件系统是用来管理磁盘空间,存储文件的一套软件,它需要满足下面几个特点文件系统要有严格的组织形式,使得文件能以块为单位存储文件系统需要索引区,用来查找存储文件的多个块存放在哪个区域如果文件系统的某个文件时热点文件,最近经常被访问,那么...

2019-10-13 09:36:07

Linux内存管理(一)Linux进程空间管理

Linux进程空间管理文章目录Linux进程空间管理一、用户态和内核态的空间划分二、用户态的布局三、内核态的布局一、用户态和内核态的空间划分每个进程或者线程都是一个task_struct,它们都有一个mm_struct用于管理内存struct mm_struct *mm;在mm_struct中有这样的一个变量unsigned long task_size; /* size of...

2019-10-11 22:02:36

Linux内存管理(五)内核态内存映射

Linux内核态内存映射文章目录Linux内核态内存映射一、内核页表二、vmalloc 和 kmap_atomic 原理三、内核缺页异常四、总结首先,需要直到,内核态的内存映射机制,主要包含以下几个部分内核态内存映射函数 vmalloc、kmap_atomic 是如何工作的内核态页表放在哪里?是怎么工作的?swapper_pg_dir 是怎么回事?出现了内核态缺页异常应该怎么办?一...

2019-10-11 21:59:31

Linux内存管理(四)用户态内存映射

Linux用户态内存映射文章目录Linux用户态内存映射一、mmap的原理二、用户态缺页异常三、总结前面讲解了虚拟地址空间是如何组织的,以及物理页是如何管理的。这篇文章将讲解这两者之间是如何映射起来的一、mmap的原理每个进程都有一个 vm_area_struct 列表,用于描述虚拟内存空间的不同内存块,这个变量的名称为 mmapstruct mm_struct { struct vm...

2019-10-10 20:53:01

STL源码剖析(十八)关联式容器之hash_map、hash_multimap

STL源码剖析(十八)关联式容器之hash_map、hash_multimap文章目录STL源码剖析(十八)关联式容器之hash_map、hash_multimap一、hash_map、hash_multimap的数据结构二、hash_map、hash_multimap的迭代器三、hash_map、hash_multimap的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3...

2019-10-07 11:54:16

STL源码剖析(十七)关联式容器之hash_set、hash_multiset

STL源码剖析(十六)关联式容器之hash_set、hash_multiset文章目录STL源码剖析(十六)关联式容器之hash_set、hash_multiset一、hash_set、hash_multiset的数据结构二、hash_set、hash_multiset的迭代器三、hash_set、hash_multiset的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3...

2019-10-07 11:26:17

STL源码剖析(十六)关联式容器之hashtable

STL源码剖析(十五)关联式容器之hashtable文章目录STL源码剖析(十五)关联式容器之hashtable一、hashtable的数据结构二、hashtable的迭代器三、hashtable的操作3.1 构造函数3.2 析构函数3.3 插入元素3.4 删除元素3.5 其他操作hashtable 是哈希表的意思,它并不是 STL 标准的,也就是 STL 并没有要求实现它。hashtable...

2019-10-07 10:41:07

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。