包含标签 Linux 的文章

Docker基础使用

本文使用的运行环境 Ubuntu 16.04.5 LTS 全新安装Docker 参考:https://docs.docker.com/install/linux/docker-ce/ubuntu/ 安装依赖包 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common 添加Docker的官方GPG key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 设置stable仓库……

阅读全文

使用iconv对文件批量转码

Windows下中文使用的编码一般默认为GB18030,git无法识别里面的中文,在Linux和Mac上打开会出现乱码问题 使用file命令可以查看文件编码 #hello.cpp为文件名 file hello.cpp iconv可以对单个文件进行转码,使用方式如下: 显示支持的编码 iconv -l 将G……

阅读全文

Linux内核学习笔记(十一)内核同步方法(自旋锁,信号量,互斥锁,完成变量,顺序锁,禁止抢占)

原子操作 Linux内核提供了多种同步机制,这些机制本质上都是通过原子操作来实现的。原子操作可以保证指令以原子方式执行,不会被中途打断(中断也不会打断一个指令,处理器只有在当前指令完成后才会去处理中断)。内核提供了两套原子操作的接口,一套用于整数原子操作,一……

阅读全文

Linux内核学习笔记(十)中断处理的下半部(Bottom Halve)

为什么需要下半部 中断处理程序有如下局限性: 中断处理程序是异步中断,被其中断执行的代码(包括别的中断处理程序)可能正在执行非常重要的任务,为了避免被中断进程停止过长时间,中断处理程序的执行应该越快越好。 中断处理程序会禁用其服务的中断线(没有设置IRQF_DI……

阅读全文

Linux内核学习笔记(九)中断和中断处理程序

中断 为了对计算机的硬件(键盘,硬盘,鼠标,网卡等)进行管理,内核需要和这些硬件通信。一种方式是使用轮训(polling)的方式,这种方式周期性地查看所有硬件设备的状态并做相应处理,这会造成很多不必要的系统开销。Linux内核使用中断的方式来管理硬件设备,中……

阅读全文

Linux内核学习笔记(八)Page Cache与Page回写

综述 Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能。此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback)。一个inode对应一个page cache对象,……

阅读全文

Linux内核学习笔记(七)系统调用

综述 用户空间进程通过内核提供的一套接口和系统进行交互,这些接口让用户空间进程能够受控地访问系统资源、创建新的进程以及和其他进程通信等。受控表示用户进程不能不受限制地做任何想做的事情,这对保证系统的稳定非常关键。在Linux系统中,系统调用是除了except……

阅读全文

Linux内核学习笔记(六)进程调度

综述 内核调度子系统负责进程调度,调度程序决定让哪个进程运行、什么时候运行、运行多久。调度程序的目标有两个:一个是最大化系统资源的利用率,一个是减少和用户的交互延迟,让用户觉得多个进程在同时运行。这两个目标是冲突的,需要做trade-off。 多任务操作系统 多……

阅读全文

Linux内核学习笔记(五)进程地址空间

进程地址空间简介 Linux是一个虚拟内存操作系统,系统中的所有进程以虚拟方式共享内存。从进程的视角来看,它独占系统中所有的物理内存,并且一个进程的地址空间可以远远大于物理内存的大小。 进程的地址空间由可寻址的虚拟内存组成,进程通过地址空间中的虚拟地址访问内存……

阅读全文

Linux内核学习笔记(四)进程管理

进程简介 进程(Process)是Unix操作系统最基本的抽象概念之一。进程是正在执行的程序,同时也是操作系统进行资源管理的最小单位,进程需要管理打开的文件、挂起的信号、内核内部数据、处理器状态等。 线程(Thread)是进程中正在执行的程序片段,是操作系统进……

阅读全文