进程优先级 硬实时进程 软实时进程 普通进程 O(1)调度.完全公平调度器 抢占式多任务处理(preemptive multitasking):各个进程都分配到一定的时间段可以执行.时间段到期后,内核会从进程收回控制权,让下一个不同的进程运行,而不考虑前一进程所执行的上一个任务. 进程生命周期 进程状态:运行.等待.睡眠.终止 抢占式多任务处理 从用户态进入核心态的方法: 系统调用:处于核心态时,与当前运行进程相关 硬件中断:处于核心态时,与当前运行进程不相关 普通进程总是可能被抢占,甚至是由其…
进程地址空间的布局 <mm_types.h> <mm_types.h> struct mm_struct { ... unsigned long (*get_unmapped_area) (struct file *filp,unsigned long addr, unsigned long len,unsigned long pgoff, unsigned long flags); ... unsigned long mmap_base; /* mmap区域的基地址 */ uns…
概述 内存管理的实现涵盖了许多领域: 内存中的物理内存页管理 分配大块内存的伙伴系统 分配较小内存块的slab.slub和slob分配器 分配非连续内存块的vmalloc机制 进程的地址空间 在IA-32系统上,可以直接管理的物理内存数量不超过896M.超过该值的内存只能通过高端内存寻址. 在64位系统上,由于可用的地址空间非常巨大,因此不需要高端内存模式. (N)UMA模型中的内存组织 有两种类型的计算机,分别以不同的方法管理物理内存: UMA计算机(uniform memory access…
进程管理 进程和文件是Linux操作系统的两个最基本的抽象. 进程是处于执行期的程序,进程不仅仅局限于一段可执行程序代码,通常还包含其他资源,如打开的文件.挂起的信号.内核内部数据.处理器状态.进程地址空间及一个或者多个执行线程(thread of execution).当然还包括用来存放全局变量的数据段等. 线程(thread)是内核调度的对象,每个线程都拥有一个独立的程序计数器(PC指针).函数调用栈和一组寄存器值.在Linux内核中,线程只不过是一种特殊的进程,线程仅仅被视为一个与其他进程…
低分辨率定时器的实现 定时器激活与进程统计 IA-32将timer_interrupt注册为中断处理程序,而AMD64使用的是timer_event_interrupt.这两个函数都通过调用所谓的全局时钟的事件处理程序,来通知内核中通用的.体系结构无关的时间处理层.无论如何,该处理程序都通过调用以下两个函数,使得周期性低分辨率计时设施开始运作. do_timer update_process_time do_time: jiffies_64 += ticks;这意味着 jiffies_64确定了…
内核锁机制 对整数的原子操作 <asm-arch/atomic.h> typedef struct {volatile int counter;} atomic_t; //初始化只能借助于ATOMIC_INIT宏 atomic_t nmi_active = ATOMIC_INIT(0); atomic_read(atomic_t *v); atomic_set(atomic_t *v,int i); ........ 自旋锁 自旋锁用于保护短的代码段,其中只包含少量C语句,因此会很快执行完毕.…
 作为Linux开发爱好者,从事linux 开发有三年多时间.做过bsp移植,熟悉u-boot代码执行流程:看过几遍<linux 设备驱动程序开发>,分析过kernel启动流程,写过驱动,分析过网卡驱动,制作过文件系统.但,仍无法对kernel有全局认识.为了更清晰的展示kernel概念,结构,实现,以思维导图的形式记录关键点,以便以记忆.增强理解.该部分主要梳理进程管理与调度相关知识点.…
转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme   目录(?)[-] 项目链接 进程的描述 进程的创建 进程的加载与运行 进程的退出 进程的调度 调度普通进程-完全公平调度器CFS   日期 内核版本 架构 作者 GitHub CSDN 2016-07-21 Linux-4.6 X86 & arm gat…
如果是新手,建议安装带图形化界面的centos,这里以安装centos7.7的64位为例 一.下载系统镜像 镜像文件下载链接https://wiki.centos.org/Download 阿里云官网:https://mirrors.aliyun.com 现更新为:https://opsx.alibaba.com/mirror 清华软件镜像:https://mirrors.tuna.tsinghua.edu.cn/ 都可以, 下载centos7.7的64位版本镜像文件种子,然后用下载软件下载即可…
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7 1.创建空白的虚拟机后界面 2.双击进入设置,点击CD/DVD设置,选择要安装的centos6.9的镜像文件位置 3.打开虚拟机电源,进行安装,进入虚拟机系统安装界面. 界面共有5个选项 Install or upgrade an exist…
概述 可换出页 只有少量几种页可以换出到交换区,对其他页来说,换出到块设备上与之对应的后备存储器即可,如下所述. 类别为 MAP_ANONYMOUS 的页,没有关联到文件,例如,这可能是进程的栈或是使用 mmap 匿名映射的内存区. 进程的私有映射用于映射修改后不向底层块设备回写的文件,通常换出到交换区. 所有属于进程堆以及使用 malloc 分配的页 用于实现某种进程间通信机制的页.例如,用于在进程之间交换数据的共享内存页. 页颠簸 这个问题涉及交换区和物理内存之间密集的数据传输问题归结为页的…
中断 中断类型 同步中断和异常.这些由CPU自身产生,针对当前执行的程序 异步中断.这是经典的中断类型,由外部设备产生,可能发生在任意时间. 在退出中断中,内核会检查下列事项. 调度器是否应该选择一个新进程代替旧的进程. 是否有信号必须投递到原进程. 数据结构 IRQ相关信息管理的关键点是一个全局数组,每个数组项对应一个IRQ编号.因为数组位置和中断号是相同的,很容易定位与特定的IRQ相关的数组项:IRQ 0在位置0,IRQ 15在位置15,等等.IRQ最终映射到哪个处理器中断,在这里是不相关的…
网络命名空间 struct net { atomic_t count; /* To decided when the network * namespace should be freed. */ atomic_t use_count; /* To track references we * destroy on demand */ struct list_head list; /* list of network namespaces *///所有命名空间链接到net_namespace_li…
五.调度器的实现 调度器的任务是在程序之间共享CPU时间,创造并行执行的错觉.该任务可分为调度策略和上下文切换两个不同部分. 1.概观 暂时不考虑实时进程,只考虑CFS调度器.经典的调度器对系统中的进程分别计算时间片,使进程运行直至时间片用尽,所有进程的所有时间片用完时,需要重新计算.相比之下,CFS只考虑进程等待时间,即进程在就绪队列(run_queue)中已等待的时间,对CPU时间需求最严格的进程被调度执行.每次调度器会挑选具有最高等待时间的进程提供CPU,如此进程的不公平等待不会被积累,而…
进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙述符(process descriptor),该结构定义在<linux/sched.h>文件里. Linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色(cache coloring)的目的.还有一方面,为了避免使用额外的寄存器存储专门记录,让像x86这样寄存器较…
proc文件系统 proc文件系统是一种虚拟的文件系统,其信息不能从块设备读取.只有在读取文件内容时,才动态生成相应的信息. /proc的内容 内存管理 系统进程的特征数据 文件系统 设备驱动程序 系统总线 电源管理 终端 系统控制参数 特定于进程的数据 cmdline:用于启动进程的命令行(用0作为分隔符,而不是空格) environ表示为该程序设置的所有环境变量 maps以文本形式,列出了进程使用的所有库的内存映射. status包含了有关进程状态的一般信息(不仅提供了有关UID/GID及进…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/BlueCloudMatrix/article/details/30799225 在Linux中进程用结构体task_struct来管理一个进程所需的全部信息(所以一般较大,在32位机上.大约有1.7KB).为了提高效率,Linux使用了一些卓越的技术. 通过slab分配task_struct结构 Linux创建进程迅速.正是由于slab分配器预先分配和反复使用task_struct.这样就避免了动…
如果系统只有一个处理器,那么给定时刻只有一个程序可以运行.在多处理器系统中,真正并行运行的进程数目取决于物理CPU的数目.内核和处理器建立了多任务的错觉,是通过以很短的间隔在系统运行的应用程序之间不停切换做到的.由此,以下两个问题必须由内核解决:除非明确要求,否则应用程序不能彼此干扰:CPU时间必须在各种应用程序之间尽可能公平共享(一些程序可能比其他程序更重要).本篇博文主要涉及内核共享CPU时间的方法以及如何在进程之间切换(内核为各进程分配时间,保证切换之后从上次撤销其资源时执行环境完全相同)…
一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for console or X terminals) and requires ncurses. Comparison between htop and top In 'htop' you can scroll the list vertically and horizontally to see all…
一.计算机操作系统简介 操作系统的定义: 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 操作系统的内核的定义: 操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源, 其中包括文件系统.内存管理.设备管理和进程管理. 操作系统.硬件.软件的关系 操作系统=所有驱动+对驱动的管理+为应用软件提供可以使用的接口 内核=所有驱动 驱动组成:字符设备(串口).块设备(u盘).网络设备 内核是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各…
进程管理:ps.top.kill 指令名称:ps语法:ps [选项]-a显示所有终端机下执行的程序.-e显示所有程序.-f显示UID,PPIP,C与STIME栏位.功能描述:查看系统中运行的进程.范例:# ps -aef# ps -A 查看所有进程,和ps -e功能相同 指令名称:top语法:top [-] [d 间隔秒数] [q] [c] [s] [S] [i]d<间隔秒数>设置top监控程序执行状况的间隔时间,单位:秒.功能描述:实时监视系统处理器的状态等信息.范例:# top -d 1…
​  netstat lsof ps pstree pkill/kill (了解jenkins git,排查环境) 查询服务器之间是否有链接(netstat -an) 某个服务是否启动(了解服务对应的启动文件,ps grep)(了解服务对应的端口 netstat -tunl | grep 8080 查看服务启动的监听端口(netstat -tuln) 查看oasis对应的zookeeper,netstat -an|grep zookepper端口/oasis端口 看看各个日志 ---------…
进程结构 进程在内核的源代码中以结构体表示,篇幅很长,在此列举一小段关键代码,可以发现是个双向链表,具体的可以在内核目录下找一个叫"sched.h"的头文件. struct task_struct { struct task_struct *real_parent; /* real parent process */ struct task_struct *parent; /* recipient of SIGCHLD, wait4() reports */ /* * children…
在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示: 上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署,但是实际生产中会有各种各样的问题存在,比如: 项目发布之后,由于各种可能的原因,服务器宕机或者服务进程挂掉,不能自动重启; 如果项目是频繁更新,频繁发布,这样子简直会把人累死; ... ok,今天先来解决第一个问题,服务重启的问题. --- supervisor介绍 Supervisor,是一个进程…
在Windows和Linux下都可以很方便地列出当前运行的进程.Windows下可以使用组合键CTRL+ALT+DEL打开任务管理器,在进程选项卡中就列举出了当前运行的所有进程,除此之外还可以在命令行模式下通过输入tasklist命令来实现此功能. 在Linux下,可以使用top命令来查看当前占用CPU资源比较多的一些进程.而ps命令则类似于Windows下的tasklist命令,它使用列表的方式列举出当前运行的进程.但是,在默认情况下ps命令并不会列举系统进程,可以使用ps ax命令来列举更多…
进程的概念 1. 在linux系统中,每一段执行的程序都称为一个进程,被分配一个进程编号(id). 2. 每个进程都对应一个父进程,一个父进程可以复制多个子进程. 3. 一个进程可能以两种方式存在:前台和后台.前台是指用户在屏幕上可以进行操作的,后台是指屏幕上看不到的实际操作. 4. 一般系统的服务都是以后台进程的方式存在,并且常驻系统中,直到关机才结束. 进程操作命令 1. 查看正在执行的所有进程 ps [-aux] [| more] 其中,-a表示显示当前所有进程,-u表示以用户格式显示进程…
本篇是Linux小白最佳实践第3篇,目的就是让白菜们自己动手安装个Linux玩玩.如果你是Linux小白,请务必亲自动手来安装.不想安装多个操作系统的,虚拟机是最佳选择,一台电脑上可以用虚拟机安装7.8个操作系统,还能不用重启轻松切换,玩转所有操作系统不求人. 想每天能听到小妞的语音播报,想学更多学校里和书本上学不大的IT技术或技能,欢迎关注微信公众号:xiniubook2008.或加微博:我的图书我做主,参加活动,免费获书. 2.3在虚拟机上安装Linux 对于初学者来说在虚拟机上安装Linu…
内核为块设备提供了两种通用的缓存方案. 页缓存(page cache) 块缓存(buffer cache) 页缓存的结构 在页缓存中搜索一页所花费的时间必须最小化,以确保缓存失效的代价尽可能低廉,因为在缓存失效时,进行搜索的计算时间实际上被浪费了.因而,页缓存设计的一个关键的方面就是,对缓存的页进行高效的组织. 管理和查找缓存的页 对此用途而言,树数据结构是非常流行的,Linux也采用了这种结构来管理页缓存中包含的页,称为基数树(radix tree) 基数树也是不平衡的,换句话说,在树的不同分…
VFS的任务并不简单.一方面,它用来提供了一种操作文件.目录及其他对象的统一方法.另一方面,它必须能够与各种方法给出的具体文件系统的实现达成妥协,这些实现在具体细节.总体设计方面都有一些不同之处. 文件系统类型 基于磁盘的文件系统 虚拟文件系统 网络文件系统 通用文件模型 在处理文件时,内核空间和用户空间使用的主要对象是不同的.对用户程序来说,一个文件由一个文件描述符标识.内核处理文件的关键是inode. inode 目录只是一个特殊的文件. inode的成员可能分为下面两类. 描述文件状态的元…
I/O体系结构 总线系统 PCI(Peripheral Component Interconnect) ISA(Industrial Standard Architecture) SBus IEEE1394 USB(Universal Serial Bus) SCSI(Small computer System Interface) 并口与串口(Parallel and Serial Interface) 与外设的交互 I/O端口:处理器管理了一个独立的虚拟地址空间,可用于管理所有I/O地址.…