Linux内核
文章平均质量分 98
JT同学
这个作者很懒,什么都没留下…
展开
-
Linux进程管理(四)进程调度之抢占式调度
Linux进程管理(四)进程调度之抢占式调度文章目录Linux进程管理(四)进程调度之抢占式调度一、抢占式调度二、设置需要重新调度的标志的时机(TIF_NEED_RESCHED)三、进程抢占的时机3.1 用户态的抢占时机3.2 内核态的抢占时机四、总结上篇文章我们将了内核调度分为主动调度和抢占式调度,主动调度我们已经讲解过了,这篇文章我们来讲解一下抢占式调度一、抢占式调度我们说过,进程真正...原创 2019-11-07 14:44:58 · 7153 阅读 · 1 评论 -
Linux进程管理(三)进程调度之主动调度
Linux进程管理(三)进程调度之主动调度文章目录Linux进程管理(三)进程调度之主动调度一、抢占式调度和主动调度二、主动调度的发生的情况三、schedule 函数四、总结在上一篇文章中,我们讲了Linux进程调度的总体内容,接下来的两篇文章我们将来讨论进程调度具体是什么时候发生的一、抢占式调度和主动调度前面我们说过,进程的切换总是通过 shedule 函数发生的,而 schedule ...原创 2019-11-06 14:05:04 · 1778 阅读 · 1 评论 -
Linux进程管理(二)进程调度
Linux进程管理(二)进程调度文章目录Linux进程管理(二)进程调度一、进程调度解决什么问题?二、进程调度整体框架三、优先级与调度策略四、调度类五、运行队列和调度实体六、FIFO 和 RR 调度算法七、完全公平调度算法(CFS)八、总结一、进程调度解决什么问题?我们在使用电脑的时候,比如打开一个视频剪辑器,一个文本编辑器,可以认为它们都是一个进程。假如CPU是单核的,那么在同一时间只能运...原创 2019-11-03 20:59:48 · 2817 阅读 · 3 评论 -
Linux进程管理(一)进程数据结构
Linux进程管理(一)进程数据结构文章目录Linux进程管理(一)进程数据结构双向链表任务ID信号处理进程状态进程调度运行统计信息进程亲缘关系内存管理文件与文件系统进程内核栈栈结构current宏Linux内核中使用 task_struct 结构来表示一个进程,这个结构体保存了进程的所有信息,所以它非常庞大,在讲解Linux内核的进程管理,我们有必要先分析这个 task_struct 中的各...原创 2019-10-27 16:59:50 · 4729 阅读 · 0 评论 -
Linux进程间通讯(五)信号量
Linux进程间通讯(五)信号量文章目录Linux进程间通讯(五)信号量一、信号量集的创建二、信号量的设置三、信号量的PV操作四、SEM_UNDO标志的含义五、总结一、信号量集的创建信号量集的创建需要通过系统调用 semget,其定义如下(这里需要注意的是,semget创建的是一个信号量集合,也就是一个集合是可以包含多个信号量的)SYSCALL_DEFINE3(semget, key_t,...原创 2019-10-22 14:15:14 · 772 阅读 · 1 评论 -
Linux进程间通讯(四)共享内存
Linux进程间通讯(四)共享内存文章目录Linux进程间通讯(四)共享内存一、IPC总览三、将共享内存映射到进程虚拟地址空间四、访问共享内存五、总结一、IPC总览在内核中,对于共享内存、消息队列、信号量都是使用统一的机制管理起来的,都叫做 ipcxxx为了维护这三种进程间通讯的机制,内核定义了一个三项的数组,如下struct ipc_namespace {...... struct...原创 2019-10-21 20:02:49 · 762 阅读 · 0 评论 -
Linux进程间通讯(三)管道
Linux进程间通讯(三)管道文章目录Linux进程间通讯(三)管道一、匿名管道二、有名管道三、总结一、匿名管道匿名管道通过系统调用 pipe 创建,其定义如下int pipe(int fd[2])通过这个系统调用,可以在内核中创建一个管道,返回两个文件描述符,表示管道的两端,一个用于读,一个用于写下面看一看内核时如何实现的SYSCALL_DEFINE1(pipe, int _...原创 2019-10-19 17:25:47 · 441 阅读 · 0 评论 -
Linux进程间通讯(二)信号(下)
Linux进程间通讯(二)信号(下)文章目录Linux进程间通讯(二)信号(下)一、信号的发送二、信号的处理三、总结上一篇文章讲解了信号的注册,这篇文件讲解信号的发送和信号的处理一、信号的发送我们可以直接通过 kill 或者 sigqueu 系统调用,给某个进程发送信号,也可以通过 tkill 或者 tgkill 给某个线程发送信号。虽然方法很多,但是最终调用的都是 do_send_sig...原创 2019-10-18 21:30:26 · 1253 阅读 · 0 评论 -
Linux进程间通讯(一)信号(上)
Linux进程间通讯(一) 信号(上)文章目录Linux进程间通讯(一) 信号(上)一、信号概述二、注册信号三、总结一、信号概述在Linux中,当遇到某些紧急的情况,可以给进程发送信号,紧急处理一些事情在Linux中,定义了许多信号,可以使用 kill -l 命令来查看# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4...原创 2019-10-18 18:50:09 · 575 阅读 · 0 评论 -
Linux文件系统(四)文件缓存
Linux文件系统(四)文件缓存文章目录Linux文件系统(四)文件缓存一、系统调用层和虚拟文件系统层二、ext4 文件系统层2.1 直接读写2.2 带缓存的读写三、总结前几篇文章讲解了文件系统的挂载和文件的打开,这篇文章讲解文件的读写一、系统调用层和虚拟文件系统层文件的读写就是通过调用 read、write 系统调用来实现的,由于读写的实现过程很多逻辑都是相似的,所以两部分放在一起讨论...原创 2019-10-16 19:31:21 · 1592 阅读 · 0 评论 -
Linux文件系统(三)虚拟文件系统
Linux虚拟文件系统文章目录Linux虚拟文件系统一、文件系统框架二、挂载文件系统三、打开文件一、文件系统框架文件系统需要许多层的组件一起协作,具体怎么协作,下面来看一看在应用层,进程操作文件可以通过 open、read、write 等系统调用在内核,每个进程都需要对其打开的文件,维护一定的数据结构在内核,整个系统打开的文件,也需要维护一定的数据结构Linux可以支持多大数十种...原创 2019-10-15 17:27:33 · 785 阅读 · 0 评论 -
Linux文件系统(二)磁盘文件系统
磁盘文件系统文章目录磁盘文件系统一、inode与块的存储二、inode 位图和块位图三、文件系统的格式四、目录的存储形式五、软链接和硬链接的存储格式六、总结我们常见的磁盘长下面这样子,左边中间圆是磁盘的盘片,右边是抽象出来的图每一层有多个磁道,每个磁道有多个扇区,每个扇区大小为512个字节文件系统是安装在磁盘之上的,本文将讲解Linux主流的文件系统 —— ext系列的文件系统格式一、...原创 2019-10-13 12:43:24 · 877 阅读 · 0 评论 -
Linux文件系统(一)文件系统概述
Linux文件系统文章目录Linux文件系统一、文件系统的功能规划二、文件系统相关的命令三、文件系统相关的调用四、总结一、文件系统的功能规划文件系统是用来管理磁盘空间,存储文件的一套软件,它需要满足下面几个特点文件系统要有严格的组织形式,使得文件能以块为单位存储文件系统需要索引区,用来查找存储文件的多个块存放在哪个区域如果文件系统的某个文件时热点文件,最近经常被访问,那么...原创 2019-10-13 09:36:09 · 1189 阅读 · 0 评论 -
Linux内存管理(二)物理内存管理(上)
Linux物理内存管理(上)文章目录Linux物理内存管理(上)一、物理内存的组织形式二、节点三、区域四、页五、页的分配六、总结一、物理内存的组织形式由于物理内存是连续的,页也是连续的,每个页的大小一样,从0开始给每个页编号,每个页用struct page表示,存放在一个大数组里。因此对于任何一个地址,只要除以页的大小,就可以得到对应页的编号,根据下标就可以找到对应的struct page结...原创 2019-10-05 16:56:15 · 1144 阅读 · 3 评论