《linux内核设计与实现》第一章

第一章Linux内核简介:

  1.3操作系统和内核简介

    操作系统:系统包含了操作系统和所有运行在它之上的应用程序。操作系统是指整个在系统中负责完成最基本功能和系统管理的那些部分。这些部分包括内核、设备驱动程序、启动应到程序、命令行shell或者其他种类的用户界面、基本的文件管理系统工具。

    内核:如果说用户界面是操作系统的外在表像,那么内核就是操作系统的内在核心。

    内核空间:系统态和保护起来的内存空间。

    内核的组成:

   1.中断服务程序(响应中断)

  2.调度程序(管理多个进程分享处理器的时间)

  3.内存管理程序(管理进程地址空间)

  4.系统服务程序(网络、进程间通信)

    应用进程如何与内核通信:

  通过系统调用的方式。应用进程调用库函数,再由函数库通过系统调用界面,让内核完成各种任务。(应用程序通过系统调用界面来陷入内核)

    内核负责管理系统的硬件设备:

  前提:硬件设备相遇系统通信,首先要发出一个异步的中断信号来打断处理器的执行(内核的执行)。

     中断服务由内核负责。但是需要注意,中断服务程序运行在与所有进程都无关的,专门的中断上下文中运行。

  1.4Linux内核和传统Unix内核的比较

    Unix内核的特点:不可分割的静态可执行库。(硬件系统提供页机制MMU管理内存。)

    Linux内核设计(主要讨论支持MMU的系统)

      单内核:

     最大的特点就是内核可以直接调用函数,所有的进程都处于内核态。它从整体上作为一个单独的大的进程来完成,同时也运行在一个单独的地址空间。

      微内核:

    功能被划分为多个独立的过程,每一个进程叫做一个服务器。有特权模式和用户模式两种,独立地运行在各自的地址空间。进程间采用IPC通信机制。

      Linux内核和Unix的显著区别:

     支持动态加载内核模块

    支持对称多处理机制SMP

    可以抢占

    不区分线程和一般进程

    提供具有设备类的面向对象的设备模型,热拔插事件,以及用户空间的设备文件系统

    摒弃了Unix一些拙劣的特性,体现了自由的精髓

  1.5Linux版本号

    例如2.6.26.1(第二位,即从版本号来判断内核是稳定还是开发状态。偶数则为稳定状态)

     2:主版本号

    6:副版本号(从版本号)

     26:修订版本号

    1:稳定版本号

总结:

    内核虽然是由进程组成,但是它区别于普通应用进程。内核(系统态,进入内核空间执行,运行于进程上下文中),应用进程(用户态,进入用户空间执行,运行于内核空间)。处理器任何时间都运行在如下三个状态中的一个:运行于用户空间,执行用户进程;运行于内核空间,处于进程上下文,内核进程执行;运行于内核空间,处于中断上下文,处理中断。如下图:

Linux的内核是一个单内核。(但是Linux汲取了微内核的精华,是模块化的,多线程的,内核本身可调度的操作系统。)

linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍的更多相关文章

  1. linux及安全《Linux内核设计与实现》第四章——20135227黄晓妍

    第四章 进程调度 进程调度程序是一个内核子系统 分配有限的处理器时间和资源 最大限度利用时间的原则(只要有可执行的进程,那么总会有进程执行) 基本工作:从一组处于等待(阻塞)状态的可执行进程中选择一个 ...

  2. linux及安全《Linux内核设计与实现》第三章——20135227黄晓妍

    第三章 (由于linux不区分进程和线程,所以它们在linux中被称为task,也叫任务) 总结:本章主要包括进程以及线程的概念和定义,Linux内核如何管理每个进程,他们在内核中如何被列举,如何创建 ...

  3. linux及安全《Linux内核设计与实现》第二章——20135227黄晓妍

    第二章:从内核出发 2.1获取源代码 2.1.1使用git Git:内核开发者们用来管理Linux内核源代码的控制系统. 我们使用git来下载和管理Linux源代码. 2.1.2安装内核源代码(如果使 ...

  4. linux及安全期中总结——20135227黄晓妍

    Linux及安全期中总结 黄晓妍 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...

  5. Linux内核设计与实现 第一章 第二章

    第一章 Linux内核简介 Unix特点: (1)     Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2)     在Unix中,所有的东西都被当作文件对待,通过一套相 ...

  6. linux及安全第三周总结——20135227黄晓妍

    总结部分: Linux内核源代码: Arch 支持不同cpu的源代码:主要关注x86 Init   内核启动的相关代码:主要关注main.c,整个Linux内核启动代码start_kernel函数 K ...

  7. linux内核设计与实现第一章

    1.1 unix的历史 Thompson实现unix 伯克利大学对其进一步开发推出了著名的BSD 其他各大厂商相继推出自己的unix 1.1.2 unix的特性 unix系统是一个强大,健壮,稳定的操 ...

  8. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  9. linux及安全第八周总结——20135227黄晓妍

    实验部分 实验环境搭建 -rm menu -rf git clone https://github.com/megnning/menu.git cd menu make rootfs qemu -ke ...

随机推荐

  1. 腾讯云大数据套件Hermes-MR索引插件使用总结

    版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/121 来源:腾云阁 https://www.qclou ...

  2. 关于layer.photos即照片显示的问题。

    在layer组件中,照片显示是不常用,今天做了一些不伤了. 在这里写出来,以备后用. 其中注意几个问题, 1.格式问题. 2.路径问题. 不同的layer有不同的格式,查看layerAPI中发现的格式 ...

  3. JQuery操作Select标签

    jQuery获取Select选择的Text和Value: 1. $("#select_id").change(function(){//code...}); //为Select添加 ...

  4. Think PHP递归重新排序无限极子分类数组(递归无限极分类)

    Think PHP递归重新排序无限极子分类数组 // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array() ...

  5. PL/SQL编程基础(三):数据类型划分

    数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...

  6. Python开发【笔记】:“~” 按位取反运计算方法

    按位取反: 要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的 原码 原码(true form)是一种计算机中对数字的二进制定点表示方法.原码表示 ...

  7. 【loadrunner】【scorm学习】demo/test域上进行scorm脚本录制及回放成功脚本备份

    vuser_init() { //web_set_sockets_option('SSL_VERSION','TLS'); lr_start_transaction("login" ...

  8. Mirror--镜像使用的工作线程数

    /*在SQL SERVER 2005 及以后版本中, 使用'MAXworker thread' 来配置可用的线程数,默认设置为0 ,即自动控制线程数 计算最大工作线程数: 对于32 位系统:逻辑CPU ...

  9. 2014年百度之星程序设计大赛 - 资格赛 1001 Energy Conversion

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/26003661 Energy Conversi ...

  10. ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能

    搭建ftp服务器 1:首先,更新软件源,保证源是最新的,这样有利于下面在线通过apt-get install命令安装ftp. 2:使用sudo apt-get install vsftp命令安装vsf ...