《Linux内核设计与实现》Chapter 1 读书笔记

一、Unix的特点

Unix从Multics中产生,是一个强大、健壮和稳定的操作系统。

  • 特点

  1.很简洁

  2.在Unix系统中,所有的东西都当做文件对待。这种抽象使对数据和对设备的操作都是通过一套相同的系统调用借口来进行的:open(),read(),write(),lseek()和close()

  3.Unix内核和相关的系统工具软件用C语言编写而成——该特点使其具备出色的平台可移植性

  4.Unix进程创建非常快速简洁,目标在于一次执行保质保量地完成一个任务上

今天,Unix已经发展成为一个支持抢占式多任务、多线程、虚拟内存、换页、动态链接和TCP/IP网络的现代化操作系统

二、Linux与Unix的区别

Linux是由LinuxTorvalds于1991年推出的类Unix系统。

  • Linux借鉴了许多Unix设计,并实现了API,但Linux没有直接使用Unix源代码。
  • Linux没有抛弃Unix的设计目的并且保证了应用程序编程接口的一致。
  • Linux是非商业的产品,任何人都可以开发内核,Linux内核是自由(公开)软件
  • Linux系统的基础是内核,C库,工具集和系统的基本工具

三、操作系统和内核简介

操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。

这些部分包括:

  • 内核
  • 设备驱动程序
  • 启动引导程序
  • 命令行shell或者其他种类的用户界面
  • 基本的文件管理工具和系统工具

用户界面是操作系统的表象,内核才是操作系统的核心。

内核独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。
这种系统态和被保护起来的内存空间,统称为内核空间。
在系统中运行的应用程序通过系统调用来与内核通信。

当内核运行时,系统以内核态进入内核空间执行;
当执行一个普通用户程序时,以用户态进入用户空间执行。

处理器的活动必然其下三者之一:

  • 运行于用户空间,执行用户进程
  • 运行于内核空间,处于进程上下文,代表某个特定的进程执行
  • 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断

四、单内核与微内核设计之比较

1.单内核(比如大多数Unix及Linux)

  • 把它从整体上作为一个大的单独的过程来实现,同时运行在一个单独的地址空间上
  • 内核直接调用函数。Linux是单内核。
  • 简单,性能高

2.微内核(比如Windows NT)

  • 微内核的功能被划分为多个独立的功能,每个过程叫做一个服务器
  • 需特权服务的服务器运行在特权模式下,其他运行在用户空间。
  • 通过消息传递处理通信。
  • 便于处理内核间通信,还使用了IPC机制;
  • 基于微内核的系统都让大部分或全部服务器位于内核。

五、Linux内核版本

Linux内核有两种:稳定的和开发中的。

【统计时间】

步骤

耗时

百分比

预计时间

2h

 

实际时间

2.5h  

阅读

1h 40%

代码

0h

 

分析总结

1.5h 60%

《Linux内核设计与实现》Chapter 1 读书笔记的更多相关文章

  1. 《Linux内核设计与实现》 Chapter4 读书笔记

    <Linux内核设计与实现> Chapter4 读书笔记 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子 ...

  2. Linux内核设计与实现第四周读书笔记

    第5章系统调用 5.1与内核通信 主要作用: 为用户控件提供了一种硬件的抽象接口. 保证了系统稳定性与安全性. 为用户空间&系统提供公共接口. 5.2API.POSIX和C库 一般情况,应用程 ...

  3. 《Linux内核分析》第六周 读书笔记

    <Linux内核设计与实现>CHAPTER3阅读梳理 [学习时间:3hours] [学习内容:进程的描述:进程的生命周期(包括创建.终结)] 一.进程(任务)描述 1.进程是处于执行期的程 ...

  4. linux内核分析 1、2章读书笔记

    一.linux历史 20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机: 1965年,Bell实验室.MIT.GE(通用电 ...

  5. 《Linux内核分析》第七周 读书笔记

    <深入理解计算机系统>CHAPTER7阅读梳理 [学习时间:3hours] [学习内容:链接需要的代码&数据:链接机制:链接生成的目标文件] 一.链接概述 1.链接 定义:链接是将 ...

  6. 《Linux内核设计》第17章学习笔记

  7. 《linux内核》课本第五章读书笔记

  8. 《Linux内核设计与实现》课本第一章&第二章学习笔记

    <Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...

  9. 《Linux内核设计与实现》Chapter 3 读书笔记

    <Linux内核设计与实现>Chapter 3 读书笔记 进程管理是所有操作系统的心脏所在. 一.进程 1.进程就是处于执行期的程序以及它所包含的资源的总称. 2.线程是在进程中活动的对象 ...

随机推荐

  1. python2.7 threading RLock/Condition文档翻译 (RLock/Condition详解)

    RLock Objects 可重入锁是一个同步原语,它可以被同一个线程多次获取.在内部,除了原始锁使用的锁定/解锁状态之外,它还使用“线程拥有”和“递归级别”的概念.在锁定状态下,某些线程拥有锁:在未 ...

  2. vue2.0模拟锚点

    在vue项目中,因为采用路由跳转,会导致无法使用常规的a标签配合ID的锚点功能. 解决办法: <a href="javascript:void(0)" @click=&quo ...

  3. Netty 聊天小程序

    这节讲解基于 Netty 快速实现一个聊天小程序. 一.服务端 1. SimpleChatServerHandler(处理器类) 该类主要实现了接收来自客户端的消息并转发给其他客户端. /** * 服 ...

  4. ES6标准入门之变量的解构赋值简单解说

    首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组 ...

  5. 【2018暑假集训模拟一】Day2题解

    T1 园艺工人的求助 [题目描述]终于,在一段繁忙的训练之后,到了NOIP 的举办的时候.同学们坐上了大巴车,享受着沿途的风光,讨论着未解决的问题,憧憬着NOIP 赛场上切题的样子.很快,大巴车到了大 ...

  6. JavaScript无阻塞加载具体方式

    将脚本放在底部.\还是放在head中,用以保证在js加载前,能加载出正常显示的页面.\<script>标签放在\前 成组脚本:由于每个\<script>标签下载时阻塞页面解析过 ...

  7. JAVA 对基础知识的加强

    一.我们在写类的时候.设置字段的时候含义: 简单的javabean类: package jd.com.vo; import jd.com.mybaitstest.account; public cla ...

  8. 在mvc视图中实现rdlc报表展示

    需求:在view视图页面中嵌入rdlc报表,rdlc的xml为动态传入的xml字符串.本项目是基于abp框架 可能出现问题: 1.rdlc报表是由asp.net的服务器控件ReportViewer来支 ...

  9. Altium 拼板方法以及 注意的 地方

    1.修改软件设置, 即工具→优先选项→覆铜重建 对号去掉,如下,否则 拼板复制 覆铜 会变形导致拼板错误!!! 2.拼板方法,Ctrl+A全部复制(不要漏掉),选择特殊粘贴的方式,快捷键 E→A  去 ...

  10. CAN2.0A 和CAN2.0B

    CAN2.0A 和CAN2.0B 原创 2015年08月03日 16:03:08 3969 CAN2.0A 是CAN协议的PART A部分,此部分定义了11bit的标识区 .CAN2.0B 是CAN协 ...