操作系统
静能生悟
静生智,定生慧,一勤天下无难事,俭以养德,厚德载物!!
展开
-
系统负载
一、系统平均负载:在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:1、它没有在等待I/O操作的结果。2、它没有主动进入等待状态(也就是没有调用wait)。3、没有被停止(例如:等待终止)。一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!这里说的是每个cpu内核,也就是如果你的主机是四核cpu,那么只要uptime最后输出的...原创 2019-09-25 09:29:45 · 886 阅读 · 0 评论 -
Linux内存管理——请页机制
当一个进程运行时,CPU访问的地址是用户空间的虚拟地址。Linux采用请页机制来节约物理内存,仅把当前要使用的用户空间中的少量页载入物理内存。当访问的虚拟内存页面没有载入物理内存时,处理器向Linux报告一个页故障以及对应的故障原因。页故障的产生有以下三种原因:(1)程序出现错误(2)虚拟地址有效,但其对应的页当前不在物理内存中,产生缺页异常,操作系统必须从磁盘或交换文件(此页被换出)中将...原创 2019-08-13 11:54:24 · 398 阅读 · 0 评论 -
内核中的同步—内核同步的措施
为避免并发,防止竞争。内核提供一组同步方法来提供对共享数据的保护。Linux使用的同步机制随内核版本的不断发展而完善。从原子操作到信号量,从大内核锁到自旋锁。这些同步机制的发展伴随着Linux从单处理器到多处理器的过渡;从非抢占式内核到抢占式内核的过渡。锁机制越来越有效,也越来越复杂。内核中的同步方法很多,主要介绍原子操作、自旋锁和信号量。一、原子操作原子操作保证指令以原子(不可再分)...原创 2019-08-21 22:29:06 · 634 阅读 · 0 评论 -
中断和异常—中断描述符表的初始化
一、中断描述符表的初始化从操作系统角度描述中断描述符表的初始化。Linux内核在系统的初始化阶段需要进行大量的初始化工作,与中断相关的工作有:初始化可编程控制器(中断控制器)8259A;将中断描述符表的起始地址载入IDTR寄存器,并初始化表中的每一项。用户进程通过INT指令发出一个中断请求,其中断请求向量在0~255之间。为防止用户使用INT指令模拟非法的中断和异常,必须对中断描述符表...原创 2019-08-16 17:28:46 · 502 阅读 · 0 评论 -
Linux内存管理——进程的用户空间管理
一、进程的用户空间管理每个进程最大可拥有3GB的私有虚拟内存空间。如何划分这3GB的空间?概括地说,用户程序经过编译、链接后形成的二进制映像文件有一个代码段和数据段,代码段在下,数据段在上。数据段中包括所有静态分配的数据空间,既全局变量和所有声明为static的局部变量,是在建立一个进程的运行映像时分配好的。除此之外,堆栈使用空间也属于基本要求,也是在建立进程时分配好的。BSS未初始化的数据段...原创 2019-08-12 19:48:13 · 738 阅读 · 0 评论 -
中断和异常—中断是什么
中断控制,最初是为克服对I/O接口控制采用程序查询所带来的处理器效率低而产生的。中断控制的主要优点是只有在I/O需要服务时才能得到处理器的响应,不需要处理器不断地进行查询。由此,最初的中断全部是对外部设备而言的,称为外部中断(或硬件中断)。内部中断(或异常),是为解决机器运行时出现的某些随机事件以及编程方便出现的。形成一个完整的中断系统。主要讨论在80x86保护模式下中断机制在Linux中...原创 2019-08-16 13:44:19 · 707 阅读 · 0 评论 -
Linux内存管理——概述
一、Linux的内存管理概述Linux内存管理的设计利用计算机系统提供的虚拟存储技术,真正实现虚拟存储器管理。关于内存管理,可能对以下问题比较困惑:1)一个源程序编译链接后形成的地址空间是虚拟地址空间还是物理地址空间?如何管理?2)程序载入内存的过程中,虚拟地址如何被转换为物理地址?1、虚拟内存、内核空间和用户空间Linux简化了分段机制,使得虚拟地址与线性地址总是一致的。线性...原创 2019-08-12 13:52:36 · 304 阅读 · 0 评论 -
内核中的同步—临界区和竞争状态
如果把内核看做不断对各种请求进行响应的服务器,那么,正在CPU上执行的进程、发出中断请求的外部设备等相当于客户端。如服务器要随时响应客户端的请求一样,内核也会随时响应进程、中断等的请求。这样比喻是为了强调内核中的各个任务(内核线程、系统调用、中断服务程序、异常处理程序、下半部等几类)并不是严格按照顺序依次执行的,而是相互交错执行的。对所有内核任务来说,内核中的很多数据(变量、队列、堆栈等数据结...原创 2019-08-21 10:45:55 · 1098 阅读 · 1 评论 -
Linux内存寻址——分页机制
一、 分页机制分页机制在段机制之后进行,完成线性地址到物理地址的转换。段机制把虚拟地址转换为线性地址,分页机制进一步把该线性地址转换为物理地址。如果不允许分页(控制寄存器CR0的最高位置0),那么经过段机制转化而来的32位线性地址就是物理地址。但如果允许分页(CR0的最高位置1),就要将32位线性地址通过一个地址变换机制转化成物理地址。80x86规定,分页机制是可选的,但很多操作系统主要采...原创 2019-08-15 17:53:10 · 291 阅读 · 0 评论 -
文件系统—虚拟文件系统(二)
二、虚拟文件系统6、与进程相关的文件结构文件最终要被进程访问,一个进程可以打开多个文件,而一个文件可以被多个进程同时访问。这里进程是通过文件描述符来抽象所打开的文件的,用用户打开文件表来描述和记录进程打开文件描述符的使用情况。1)文件对象每个打开的文件都用一个32位的数字来表示下一个读写的字节位置,这个数字叫做文件位置或偏移量。每次打开一个文件,文件位置一般都被置为0,此后的读或写...原创 2019-08-24 21:03:52 · 201 阅读 · 1 评论 -
Linux内存寻址——分段机制
一、物理地址、虚拟地址和线性地址将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址是物理地址;将应用程序员看到的内存空间定义为虚拟地址空间,其中的地址是虚拟地址。线性地址空间是指一段连续的,不分段的,范围从0到4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。MMU内存管理单元是硬件电路,包含两个部件,分段部件(分段机制)和分页部件(分页机制)。...原创 2019-08-15 14:07:08 · 239 阅读 · 0 评论 -
中断应用—时钟中断
在所有的外部中断中,时钟中断起特殊的作用。因为计算机是以精确的时间进行数值运算和数据处理的,最基本的时间单元是时钟周期,例如取指令、执行指令、存取内存等,这里讨论的是操作系统建立的时间系统,这个时间系统是整个操作系统活动的动力。一、时钟硬件大部分PC中有两个时钟源,分别是RTC和OS(操作系统)时钟。RTC(实时时钟)也叫做CMOS(互补金属氧化物半导体)时钟,是PC主板上的一块芯片(时钟...原创 2019-08-20 15:40:54 · 6463 阅读 · 0 评论 -
内核中的同步—生产者-消费者并发实例
随着人们生活水平的提高,每天早餐基本是牛奶、面包。在牛奶生产的环节中,生产厂家必须和经销商保持良好的沟通才能使效益最大化,具体说就是生产一批就卖一批,并且只有卖完了,才能生产下一批,这样才能达到供需平衡,否则就有可能造成浪费(供过于求)或者物资短缺(供不应求)。假设现在有一个牛奶生产厂家,它有一个经销商,并且由于资金不足,只有一个仓库。牛奶生产厂家首先生产一批牛奶,并存放在仓库里,然后通知经销商来...原创 2019-08-22 12:19:33 · 496 阅读 · 0 评论 -
内核中的同步—内核多任务并发实例
内核任务是指在内核态执行的任务,具体包括内核线程、系统调用、中断处理程序、下半部任务等几类。一、内核任务及其并发关系在下面实例中,涉及如下三种内核任务,分别是系统调用、内核线程和定时器任务队列。1、系统调用:是用户程序通过门机制来进入内核执行的内核例程,它运行在内核态,处于进程上下文中,可以认为是代表用户进程的内核任务,因此具有用户态任务的特性。2、内核线程:内核线程可以理解成在内...原创 2019-08-22 16:37:06 · 651 阅读 · 0 评论 -
Linux任务调度机制
一、Linux任务调度机制Linux分实时进程和普通进程,实时进程应该先于普通进程而运行。实时进程:1) FIFO(先来先服务调度)2) RR(时间片轮转调度)。每个进程有两个优先级(动态优先级和实时优先级),实时优先级就是用来衡量实时进程是否值得运行的。 非实时进程有两种优先级,一种是静态优先级,另一种是动态优先级。实时进程又增加了第三种优先级,实时优先级。优先级越高,得到CPU...原创 2019-09-24 19:26:37 · 446 阅读 · 0 评论 -
进程调度算法
一、进程调度算法1、先来先服务调度算法(FCFS,first come first served):谁第一个排队,谁就先被执行,在它执行过程中,不会中断它。2、短作业优先调度算法(SJF,shortest job first):对预计执行时间短的进程有限分配处理机,通常后来的短进程不会抢先正在执行的进程;对长进程非常不利,可能长时间得不到执行。3、最高响应比优先法(HRRN,highe...原创 2019-09-24 19:21:40 · 338 阅读 · 0 评论 -
设备驱动—块设备驱动程序
块设备驱动程序提供对面向块的设备的访问,这种设备以随机访问的方式传输数据,并且数据总是具有固定大小的块。典型的块设备是磁盘驱动器,也有其它类型的块设备。块设备和字符设备有很大区别。比如块设备上可以挂载文件系统,字符设备不可以。这是随机访问带来的优势,因为文件系统需要能按块存储数据,同时更需要能随机读写数据。另外数据经过块设备相比操作字符设备需要多经历一个数据缓冲层,应用程序与块设备传递数据...原创 2019-08-30 10:58:28 · 223 阅读 · 0 评论 -
设备驱动—字符设备驱动程序
Linux下的应用程序在访问字符设备时,一般都是通过设备文件访问的。设备文件一般都存放在/dev目录下。字符设备文件的第一个标志是c,如下所示:总结:每一个文件代表一个设备,在时间前面有两个用逗号隔开的数字,第一个数字是主设备号,第二个数字是次设备号。一般认为一个主设备号对应一个驱动程序,这里列出的TTY设备都由主设备号为4的驱动程序管理。也可以一个主设备号对应多个驱动程序。一个次设备号对...原创 2019-08-29 16:24:30 · 381 阅读 · 0 评论 -
设备驱动—I/O空间的管理
设备通常会提供一组寄存器来控制设备、读写设备以及获取设备的状态。这些寄存器就是控制寄存器、数据(输入/输出)寄存器和状态寄存器,它们可能位于I/O空间,也可能位于内存空间。当位于I/O空间时,通常被称为I/O端口,当位于内存空间时,对应的内存空间被称为I/O内存。一、I/O端口和I/O内存系统设计者为了对I/O编程提供统一的方法,每个设备的I/O端口都被组织成如图9.3所示的一组专用寄存器...原创 2019-08-29 11:44:16 · 302 阅读 · 0 评论 -
设备驱动—设备驱动程序框架
设备种类繁多,相应的设备驱动程序非常多。设备驱动程序是内核的一部分,但设备驱动程序由业余编程高手、设备厂商等来完成。为了让设备驱动程序的开发建立在规范的基础上,就必须在驱动程序和内核之间有一个严格定义和管理的接口。通过这个规范,可以规范设备驱动程序与内核之间的接口。Linux的设备驱动程序与外设的接口,可以分为以下三个部分。驱动程序与内核的接口,这是通过数据结构file_operation...原创 2019-08-28 17:19:25 · 700 阅读 · 0 评论 -
设备驱动—概述
计算机中三个最基本的硬件是CPU、内存和输入输出(I/O)设备。与I/O设备相比,文件系统是一种逻辑意义上的存在,它只不过使对设备的操作更为方便、有效、更有组织、更接近人类的思维方式。文件系统是对设备操作的组织和抽象,设备操作是对文件操作的最终实现。如何才能使没有感觉的硬件,变得有灵性,从而控制设备像操作普通文件一样方便有效,这就是要讨论的设备驱动问题。一、概述UNIX操作系统在最初设计时...原创 2019-08-28 14:56:37 · 378 阅读 · 0 评论 -
文件系统——编写文件系统
8.5 编写一个文件系统如果写一个实际文件系统,但是涉及的东西太多,不容易简明扼要的理解文件系统的实现。Linux内核中提供的romfs文件系统是个非常理想的例子,既有实际应用架构,也清晰明了,故以romfs为实例分析文件系统的实现。一、Linux文件系统的实现要素编写新文件系统涉及一些基本对象,具体来讲,需要建立一个结构,四个操作表,如下所示。文件系统类型结构(file_syst...原创 2019-08-27 14:17:38 · 691 阅读 · 0 评论 -
Linux最常用命令:简单易学,但能解决95%以上的问题
Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。一、linux的目录结构/ 下级目录结构 bin (binaries)存放...原创 2019-08-26 20:11:34 · 152 阅读 · 0 评论 -
文件系统—文件的打开与读写
8.4 文件的打开与读写如之前提到的例子,用户发出一条shell命令:把MS-DOS(微软磁盘操作系统)类型文件拷贝到Ext2类型的文件中。命令shell调用外部程序(如cp),在实现cp的代码片段中,涉及文件系统常见的三种文件操作,即三个系统调用:open()、read()和write()。下面介绍这三个系统调用的实现及涉及的相关知识。一、文件打开open()系统调用就是打开文件...原创 2019-08-26 18:41:12 · 1829 阅读 · 0 评论 -
文件系统—文件系统的注册、安装与卸载
一、文件系统的注册和注销当内核被编译时,就已经确定支持哪些文件系统,这些文件系统在系统引导时,在VFS中进行注册。如果文件系统是作为内核可装载的模块,则在实际安装时进行注册,在模块卸载时注销。每个文件系统都有一个初始化例程,其作用是在VFS中进行注册,即填写一个file_system_type的数据结构。所有已注册的文件系统的file_system_type结构形成一个链表,把这个链表称为...原创 2019-08-26 11:35:54 · 536 阅读 · 0 评论 -
文件系统—虚拟文件系统(一)
为了保证Linux的开放性,设计者必须考虑如何使Linux除了支持Ext2文件系统外,还能支持其它各种不同的文件系统,例如日志文件系统、集群文件系统以及加密文件系统等。因此,就必须把各种不同文件系统的操作和管理纳入到一个统一的框架中,使得用户程序通过同一个文件系界面,即同一组系统调用,能对各种不同的文件系统和文件操作。用户程序不必关心各种不同文件系统的实现细节,而使用系统提供统一、抽象、虚拟的文件...原创 2019-08-24 12:09:38 · 373 阅读 · 0 评论 -
中断和异常-中断的下半部处理机制
Linux并不是一次性把中断所要求的事情全部做完,而是分两部分来做,下面具体描述内核如何处理中断的下半部。一、为什么把中断分为两部分来处理一般都是在中断请求关闭的条件下执行中断服务程序,以避免嵌套使中断控制复杂化。但是,中断是一个随机事件,随时会到来,如果关中断的时间太长,CPU不能响应其它的中断请求,会造成中断丢失。内核的目标是尽可能快地处理完中断请求,把更多的处理向后推迟。例如,假设一...原创 2019-08-19 16:30:31 · 586 阅读 · 0 评论 -
Linux操作系统概述-认识操作系统
CPU-计算机的心脏,内存-记忆的载体,外围设备-磁盘/打印机/键盘/网卡等输入输出设备,它们协同工作,有一层软件来管理它们,这层软件就是操作系统.操作系统是一个庞大而复杂的系统软件.1.1 认识操作系统1.1.1 从使用者角度看: 操作系统使得计算机易于使用.操作系统把烦琐留给自己,简单留给用户.1.1.2 从程序开发者角度看: 开发者不用关心如何在内存存放变量/数据,如何从外...原创 2019-08-02 16:50:28 · 272 阅读 · 0 评论 -
学习Linux必备的硬件基础
https://mp.weixin.qq.com/s/7EzQ3LDtdLc3EjtMnfJHfA转载 2019-07-29 16:57:55 · 138 阅读 · 0 评论 -
Ubuntu安装Samba服务,实现Windows映射网络盘到Ubuntu
1、Ubuntu安装Samba服务sudo apt-get install samba samba-common2、编辑Samba的配置文件/etc/samba/smb.conf,在文件最后添加这一项:[vichip]path = /home/vichipavailable = yesbrowseable = yespublic = yeswritable = yesvalid ...转载 2019-07-11 17:28:40 · 907 阅读 · 0 评论 -
Linux hexdump使用
hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。语法hexdump [选项] [文件]...选项-n length 只格式化输入文件的前length个字节。-C 输出规范的十六进制和ASCII码。-b 单字节八进制显示。-c 单字节字符显示。-d 双字节十进制显示。-o 双字节八进制显示。-x 双字节十六进...转载 2018-12-10 09:35:36 · 514 阅读 · 0 评论 -
嵌入式Linux应用开发完全手册
嵌入式Linux应用开发完全手册 韦东山原创 2018-12-12 17:48:05 · 1432 阅读 · 0 评论 -
如何在Ubuntu上安装微信
使用Snap来安装微信依次在terminal 执行一下命令sudo apt install snapd snapd-xdg-opensudo snap install electronic-wechat运行WeChat,扫码就进入WeChat要删除微信客户端sudo snap remove electronic-wechat...原创 2018-11-29 16:23:36 · 1765 阅读 · 0 评论 -
Ubuntu16.04 install Notepad++
https://www.linuxidc.com/Linux/2018-04/152014.htm转载 2018-11-07 14:42:31 · 2042 阅读 · 0 评论 -
Ubuntu16.04 install SecureCRT tool
http://www.cnblogs.com/kevingrace/p/9353963.html转载 2018-11-07 14:20:18 · 720 阅读 · 0 评论 -
Win10安装Ubuntu16.04
https://blog.csdn.net/s717597589/article/details/79117112/转载 2018-11-02 13:57:30 · 971 阅读 · 0 评论 -
Linux多线程互斥锁
#include <stdio.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t thread_mutex;int global_val = 0;void *thread1(void *arg){ while(1){ pthread_mutex_lock(&a...原创 2018-08-14 14:45:20 · 166 阅读 · 0 评论 -
高通平台常用术语
一、高通平台常用术语【ACR】Access control register【AMSS】Advanced Mobile Subscriber Software【APPS PBL】Application Processor Primary Boot Loader【APQ】Application Processor Qualcomm【APSS】Applications processor ...转载 2018-07-31 14:04:08 · 2252 阅读 · 1 评论 -
Linux操作系统概述-UNIX/Linux操作系统
1.2 UNIX/Linux操作系统1.2.1 UNIX诞生和发展UNIX是一个良好的/通用的/多用户/多任务/分时操作系统.1.2.5 Linux的开发模式Linux的开发模式是开放与协作的,具有以下特点:(1)开放与协作的开发模式.提供源代码,遵守GPL.(2)发挥集体智慧,减少重复劳动(3)经历各种各样的测试与考验,软件的稳定性好(4)开发人员凭兴趣去开发,热...原创 2019-08-03 14:14:33 · 226 阅读 · 0 评论 -
Linux操作系统概述——Linux内核源代码
1.4.2 Linux内核源代码结构1、include/子目录包含建立内核代码时所需的大部分头文件2、init/子目录包含内核的初始化代码,内核开始工作的起点3、arch/子目录包含Linux支持的所有硬件结构的内核代码4、drivers/子目录包含内核中所有的设备驱动程序,如字符设备、块设备、SCSI设备等5、fs/子目录包含所有文件系统的代码6、net/子目录包含内...原创 2019-08-03 14:41:09 · 2480 阅读 · 0 评论