Linux内核操作系统原理与概述(流程图)
1、操作系统是什么操作系统(Operating System,OS)是控制应用程序执行和充当硬件系统和应用程序之间的界面的软件。
计算机系统由硬件和软件两部分组成。操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要的地位;
而其它的诸如汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。操作系统已成为现代计算机系统(大、中、小及微型机)、多处理机系统、计算机网络、多媒体系统以及嵌入式系统中都必须配置的、最重要的系统软件。
1.1初步认识操作系统及其功能当前比较流行的操作系统有:
操作系统具体能做什么?毫无疑问,我们都知道的有 运行程序、控制多个程序并发运行、管理系统资源、监控系统状态、 提供图形化交互界面、 存储文件,读取文件
进程管理
进程控制:创建、暂停、唤醒、撤销等;
进程调度:调度策略、优先级;
进程通信:进程之间怎么通信。
设备管理
设备的分配和调度;
设备的无关性动作;
设备的传输控制;
设备的驱动管理
内存管理
内存分 ...
Linux内核架构和工作原理
前言:作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程。该进程负责进一步的系统初始化操作。init进程是进程树的根,所有的进程都直接或者间接起源于该进程。virt/ —- 提供虚拟机技术的支持。
1、Linux内核预备工作理解Linux内核最好预备的知识点:
懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构
Linux内核的特点:
结合了Unix操作系统的一些基础概念
Linux内核的任务:
1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。
3.内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各 ...
Linux内核看socket底层的本质(IO)
1、I/O 模型一个输入操作通常包括两个阶段:
等待数据准备好
从内核向进程复制数据
对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。
Unix 有五种 I/O 模型:
阻塞式 I/O
非阻塞式 I/O
I/O 复用(select 和 poll)
信号驱动式 I/O(SIGIO)
异步 I/O(AIO)
1.1阻塞式 I/O应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。
应该注意到,在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率会比较高。
下图中,recvfrom() 用于接收 Socket 传来的数据,并复制到应用进程的缓冲区 buf 中。这里把 recvfrom() 当成系统调用。
12345ssize_t recvfrom(int sockfd, v ...
Linux内核编译与开发
1、Linux内核简介linux kernel map:
linux 系统体系结构:
linux kernel体系结构:arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高,这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了充分的保护
用户空间(用户模式)转到内核空间(系统模式)方法:·系统调用·硬件中断
linux kernel 体系结构:
虚拟文件系统VFS:VFS(虚拟文件系统)隐藏各种文件系统的具体细节,为文件操作提供统一的接口
2、Linux内核源代码linux内核下载***http://www.kernel.org***目录结构:解压linux kernel tar后目录·arch:根据cpu体系结构不同而分的代码·block:部分块设备驱动程序·crypto:加密,压缩,CRC校验算法·documentation:内核文档·drivers:设备驱动程序·fs(虚拟文件系统vfs):文件系统·include:内核所需的头文件,(与平台无关的头文件在include/linux中)·lib: ...
Linux内核虚拟文件系统
1、虚拟文件系统的作用虚拟文件系统(VFS)是linux内核和存储设备之间的抽象层,主要有以下好处。
- 简化了应用程序的开发:应用通过统一的系统调用访问各种存储介质
- 简化了新文件系统加入内核的过程:新文件系统只要实现VFS的各个接口即可,不需要修改内核部分
2、虚拟文件系统的4个主要对象虚拟文件中的4个主要对象,具体每个对象的含义参见如下的详细介绍。
2.1超级块超级块(super_block)主要存储文件系统相关的信息,这是个针对文件系统级别的概念。
它一般存储在磁盘的特定扇区中,但是对于那些基于内存的文件系统(比如proc,sysfs),超级块是在使用时创建在内存中的。
超级块的定义在:<linux/fs.h>
123456789101112131415161718192021222324252627282930313233343536/* * 超级块结构中定义的字段非常多, * 这里只介绍一些重要的属性 */struct super_block { struct list_head s_list; / ...
Linux操作系统ARM体系结构处理器机制原理与实现
ARM 的概念ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片,它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬件部件,比如 UART、SDI、I2C 等,从而设计出不同的 SoC 芯片。
ARM 的应用场景基于 ARM 的处理器具有高速度、低功耗、价格低等优点被广泛应用于以下领域:
为通信、消费电子、成像设备等产品,提供可运行复杂操作系统的开放应用平台;
在海量存储、汽车电子、工业控制和网络应用等领域,提供实时嵌入式应用;
安全系统,比如信用卡、SIM 卡等。
ARM的技术特征ARM 架构支持 32 位的 ARM 指令集和 16 位的 Thumb 指令集(大大减小了代码的存储空间)。
这里先以一个例子解释一下架构、核、处理器和芯片之间的特征:S3C2440,这是一款SoC芯片,注意,它不是cpu。2440和我们熟知的51单片机有点类似,都属于嵌入式,嵌入式的发展到目前经历了三个阶段,分别是SCM、MCU、SoC。51属于SCM或MCU,而244 ...
Linux操作系统ARM指令集与汇编语言程序设计
一、实验目的1.了解并掌握ARM汇编指令集
2.应用ARM指令集编写一个程序操控开发板上的LED灯
二、实验要求应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。
三、实验原理四个LED灯的电路如下图所示:
四个按键电路图如下所示:
将LED灯的控制地址放入一个寄存器中,并将其设置为输出模式:
把按键控制地址的内容全置零,为输入模式(复位值为0,此步骤可省略)。
四、实验结果将生成的二进制代码用烧写脚本烧写到SD卡中,插入开发板的SD卡槽,从SD卡启动,按下按键即开启LED流水灯模式。
五、结果分析通过掩码取出按键数据地址中的值的状态来判断按键是否按下,若按下则跳转到LED流水灯的程序当中。
流水灯程序即顺序的程序结构,依次点亮LED灯,延时并熄灭,达到流水效果。
六、附录:实验源代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546.text.globl _start_start: // ...
Linux操作系统IO机制原理(流程图详解)
前言:我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。
不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯片、导线、电源和其他组成硬件的物理设备。而我们程序员眼中的 I/O 其实就是硬件提供给软件的接口,比如硬件接受到的命令、执行的操作以及反馈的错误。我们着重探讨的是如何对硬件进行编程,而不是其工作原理。
1,I/O 设备什么是 I/O 设备?I/O 设备又叫做输入/输出设备,它是人类用来和计算机进行通信的外部硬件。输入/输出设备能够向计算机发送数据(输出)并从计算机接收数据(输入)。
I/O 设备(I/O devices)可以分成两种:块设备(block devices) 和 字符设备(character devic ...
Linux操作系统内存管理RAID磁盘阵列与配置
1、RAID磁盘阵列简称:独立冗余磁盘阵列
把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。从而提供比单个硬盘更高的存储性能和提供数据备份技术。
1.1RAID级别组成磁盘阵列的不同方式称为RAID级别(RAID Levels)
常用的RAID级别:
RAID0、RAID1、RAID5、RAID6、RAID1+0等
①、RAID 0(条带化存储)
RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。
RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
RAID 0不能应用于数据安全性要求高的场合
②、RAID 1(镜像存储)
通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能
RAID 1是磁盘阵列中单位成本最高的。但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
③、RAID 5
N ...
Linux操作系统内存管理之磁盘高速缓存机制
前言:相信通过前面的虚拟文件系统VFS及一个具体的Ext2文件系统博文,大家对基本的VFS体系有一个大致的掌握了吧。从本章开始,我们将讨论一些VFS底层的技术细节,磁盘高速缓存就是其中一个重要的技术。磁盘高速缓存是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问而不用再访问磁盘。
因为对同一磁盘数据的反复访问频繁发生,所以磁盘高速缓存对系统性能至关重要。与磁盘交互的用户进程有权反复请求读或写同一磁盘数据。此外,不同的进程可能也需要在不同的时间访问相同的磁盘数据。例如,你可以使用cp命令拷贝一个文本文件,然后调用你喜欢的编辑器修改它。为了满足你的请求,命令shell将创建两个不同的进程,它们在不同的时间访问同一个文件。
我们曾在前面的博文中提到过其他的磁盘高速缓存:目录项高速缓存和索引节点高速缓存,前者存放的是描述文件系统路径名的目录项对象,而后者存放的是描述磁盘索引节点的索引节点对象。不过要注意,目录项对象和索引结节点对象不只是存放一些磁盘块内容的缓冲区,而是还加了一些内核感兴趣的其他信息,这些内容并不是从磁盘的某一个块上读取出来的;由此而 ...