1. Linux操作系统的构成

(1)内核(kernel)

  ①操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统。

  ②控制系统和硬件之间的相互通信。

  ③决定着系统的性能和稳定性。

(2)Shell

(3)文件系统

  ①文件:数据或设备的一种逻辑组织

  ②文件系统:文件间关系管理的一种逻辑组织

(4)应用程序

  ①程序和进程

    程序:计算机执行的指令集合

    进程:程序的一个运行实例,操作系统资源分配的最小单位。

  ②线程(轻量级进程):程序运行的基本单位,一个进程内部可以有一个或若干线程同时运行。

  ③信号:Linux系统中进程通信的一种技术,异步程序设计的基础

  ④客户端和服务器。

2. 启动流程简介

(1)启动流程

  ①芯片和部分外围电路的初始化;②加载内核;

  ③加载最小文件系统;④加载硬盘上的根文件系统;⑤启动1号进程/sbin/init

(2)BootLoader(uboot)

  ①BootLoader就是在操作系统内核运行之前运行的一段小程序。

  ②初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

  ③严重依赖于硬件,在嵌入式开发中建立一个通用的BootLoader几乎是不可能的。

  ④在Linux中称为grub

(3)init进程

  ①Linux启动的第1个进程(1号进程)0号为内核进程(swapper进程)

  ②执行/etc/init.d目录中所有的脚本文件,启动本某系统的服务。

  ③执行/sbin/getty初始化0、1和2(标准输入、标准输出和标准错误)

  ④执行/bin/login启动用户登录程序;

  ⑤管理孤儿进程

3. Linux内存管理

3.1 内存管理

(1)进程隔离:保护独立的进程,防止互相干涉数据和存储空间

(2)自动分配和管理:动态地分配,分配对程序员是透明的。

(3)支持模块化的程序设计:能够定义程序模式,并且动态地创建、销毁模块,改变模块大小

(4)保护和访问控制:允许一部分内存可以由各种用户以各种方式进行访问

(5)长期存储:关机后长时间保存信息。

3.2 段页式内存管理

(1)进程在虚拟内存中分为代码段、数据段和堆栈段

(2)进程在段中有许多固定大小的块组成,这些块称为页

(3)虚拟地址由段号、页号和页中偏移量构成

(4)虚地址和贮存中实地址(物理地址)的动态映射。

(2)缺页:将进程全部载入内存;按需调页

4. 系统调用和POSIX标准

(1)系统调用:指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组接口来获得操作系统内核提供的特殊服务。

(2)POSIX标准

  ①ISO C:1989年,C程序设计语言的ANSI标准得到批准,此标准被采纳为国际标准ISO/IEC 9899:1990。ISO C标准的意图是提供C程序的可移植性,使其能够适合于大量不同的操作系统,而不是只适合UNIX系统。

  ②IEEE POSIX:在Linux中用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准——POSIX标准。这些系统调用接口主要通过C库(libc)实现的。该标准的目的是提升应用程序在各种UNIX系统环境之间的可移植性,它包含了ISO C标准函数库。

5. Linux进程运行态

(1)内核态:进程运行在内核空间

(2)用户态(运行态):进程运行在用户空间

(3)说明:

  ①当程序运行在用户态时,它不能直接访问内核数据结构或内核的程序。但是当应用程序运行在内核下时,这些限制不再有效。

  ②每种CPU模型都为从用户态到内核态的转换提供了特殊的指令,反之亦然。

  ③内核本身并不是一个进程,而是进程的管理者。进程/内核模式假定:请求内核服务的进程使用所谓的系统调用的特殊编程机制。每个系统调用都设置了一组识别进程请求的参数,然后执行与硬件相关的CPU指令完成从用户态到内核态的转换。

第2章 Linux操作系统简介的更多相关文章

  1. Linux内核分析——第一章 Linux内核简介

    第一章   Linux内核简介 一.Unix的历史 1.Unix系统成为一个强大.健壮和稳定的操作系统的根本原因: (1)简洁 (2)在Unix中,很多东西都被当做文件对待.这种抽象使对数据和对设备的 ...

  2. 《Linux内核设计与实现》读书笔记 第一章 Linux内核简介

    一.相关历史 1. Unix内核的特点 简洁:仅提供系统调用并有一个非常明确的设计目的 抽象:几乎所有东西都被当做文件 可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力 ...

  3. Linux操作系统简介

    一:Linux系统概述 1.常见操作系统 - 服务端操作系统 : linux.unix.windows server - 单机操作系统 : windows(dos .ucdos.win95.win98 ...

  4. 第一章 Linux操作系统及其历史介绍

    一.什么是操作系统 1.基本含义: 简称OS 是计算机系统中必不可少的基础系统软件,是应用程序运行和用户操作必备的基础环境 操作系统就是一个人与计算机之间的中介 2.组成方式: 操作系统的组成: 计算 ...

  5. 第1章 Linux系统简介

    第1节 UNIX发展历史和发行版本 1. UNIX与Linux发展史 1.1 UNIX发展历史 (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发 ...

  6. 第2课 Linux操作系统简介

    1. Linux操作系统的构成 (1)内核(kernel) ①操作系统的核心,负责管理系统的进程.内存.设备驱动程序.文件和网络系统. ②控制系统和硬件之间的相互通信. ③决定着系统的性能和稳定性. ...

  7. 第1章 Linux内核简介

    1.1 Unix的历史 unix的优点 简介,没有繁冗的系统调用 所有东西都被当成了文件对待,对文件和对设备的操作是通过同样的系统调用的接口实现的 内核和相关工具使用C编写,具有很高的可移至性 创建新 ...

  8. Linux学习笔记 一 第一章 Linux 系统简介

    Linux简介 一.UNIX与Linux发展史

  9. 第一章 Linux内核简介

    1. 操作系统和内核 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分.包括内核.设备驱动程序.启动引导程序.命令行shell或者其他种类的用户界面.基本的文件管理工具和系统工具. 用户 ...

随机推荐

  1. (CLR via C#学习笔记)线程基础

    一 使用线程的理由 1.可响应性(通常是对于客户端GUI应用程序);2.性能,多个CPU(或多核CPU)能并发执行多个线程,同时执行多个操作能提升性能. 二 线程开销 线程有空间(内存耗用)和时间(运 ...

  2. spark + cassandra +postgres +codis 大数据方案

    1.环境: 1.1.cassandra 集群: 用于日志数据存储 1.2.spark集群: 用户后期的实时计算及批处理 1.3.codis 集群: 用于缓存一些基本数据如IP归属地,IP经纬度等,当日 ...

  3. 去掉Firefox的标题栏

    Linux Mint里,火狐的标题栏很不美观,不过火狐可是出名的的“可定制”,Hide Caption扩展拖拖地满足你的要求,简直不能再好! 献上链接: https://addons.mozilla. ...

  4. Qt Creator下应用CMake项目调试mex文件

    网上可以找到很多应用Visual Studio编写.编译mex文件,并与MATLAB联合调试的文章.但这只限于Win平台,网上许多源码都是.mexa64的文件,它们的作者是怎么调试的呢?这里我介绍一下 ...

  5. Leetcode 51

    //看了一次解析后,一次AC,用一个pos记录行列.class Solution { public: vector<vector<string>> solveNQueens(i ...

  6. FZU 2150 Fire Game 广度优先搜索,暴力 难度:0

    http://acm.fzu.edu.cn/problem.php?pid=2150 注意这道题可以任选两个点作为起点,但是时间仍足以穷举两个点的所有可能 #include <cstdio> ...

  7. 【LeetCode 36_哈希表】Valid Sudoku

    //occupyed_1检查行是否占用 //occupyed_2检查列是否占用 //occupyed_3检查块是否占用 bool isValidSudoku(vector<vector<c ...

  8. Shell排序算法和合并排序算法

    Shell排序(希尔排序)算法Shell排序严格来说基于插入排序的思想,其又称为希尔排序或者缩小增量排序. Shell排序的流程:1.将由n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个 ...

  9. centos7上systemd详解

    centos7上systemd详解  发表于 2016-06-07 |  分类于 linux CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往 ...

  10. flex布局在垂直居中里,元素超过容器大小后,不能通过滚动条滚动到顶端,这是个flex的bug

    The Problem Flexbox makes centering very easy. By simply applying align-items: center and justify-co ...