Do what we want based on what others already did with additional abstraction and organization to service for uses.

  1. Preface

    • Provide valuable insight to pepole who want to know more about the critical design issues in a modern operating system.
    • Understand how things really work inside the machine, often called microprocessor or MPU or SoC.
    • Two ways of designing OS: design OS based on specific hardware platform, or skip the hardware-dependent details and concentrate on the pure hardware-independent parts of the kernel.
    • Efficient kernels take advantage of most available hardware features, such as addressing techniques, caches, processor exceptions, special instructions, control registers, I/O registers, memory management unit(MMU), and so on.
    • When covering hardware features, out strategy is only sketch the features that are totally hardware-driven while detailing those that need some software support.
    • shall be interested in kernel design rather than in computer architecture.
    • Learning kernel shall use the bottom-up approach, hardware-->I/0 registers-->control registers-->OS-->system call-->User app
    • Start with data structures needed to support he functions described in the chapter, Then move from the lowest level of functions to higher levels, often ending by showing how system calls issued by user applications are supported
    • Memory management, including mmp, file buffering, process swapping, and Direct memory Access
    • The virtual Filesystem layer and the Second and Third Extended Filesystems.
    • Process creation and scheduling
    • Signals, interrupts, and the essential interfaces to device drivers
    • Timing
    • Sychronization within the kernel
    • Interprocess Communication
    • Program Execution
  2. Introduction
    • Linux was initially developed by Linus Torvalds in 1991 as an OS for IBM-compatible personal computers based on the Intel 80386 microprocessor.
    • The current standards specify only an application programming interface API that is, a well-defined environment in which user programs should run.
    • Windows NT and its descendents are POSIX-compliant.
    • Unix-like kernels often share fundamental design ideas and features.
    • Adopt the best features and desgin choices of several different Unix kernels.
    • Monolithic kernel: large, complex, conventional
    • Compiled and Statically linked traditional kernels:load and unload dynamically some portions of the kernel code, device drivers which are usually called modules.
    • Kernel threading: organized as a set of kernel threads.A kernel thread is an execution context that can be independently scheduled;it may be associated with a user program, or it may run only some kernel functions. Context switches between kernel threads are usually much less expensive than context switches between ordinary processes, because the former usually operate on a common address space.
  3. adf
  4. zcv
  5. zcv
  1. dfadf

adf

Linux Notes的更多相关文章

  1. Linux Notes | Linux常用命令行笔记

    [ show all running processes ] (1) ps -aux | less 'ps' means: Process Status The -a option tells ps ...

  2. Linux Notes:Linux下的远程登录协议及软件

    常见的远程登录协议 1.RDP(remote desktopp protocol)协议,windows远程桌面协议 2.telnet CLI 界面下远程管理,几乎所有的操作系统都有,数据明文传输,不安 ...

  3. 对于linux下system()函数的深度理解(整理)

    原谅: http://blog.sina.com.cn/s/blog_8043547601017qk0.html 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同 ...

  4. 转:对于linux下system()函数的深度理解(整理)

    这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

  5. 【C/C++】Linux下system()函数引发的错误

    http://my.oschina.net/renhc/blog/54582 [C/C++]Linux下system()函数引发的错误 恋恋美食  恋恋美食 发布时间: 2012/04/21 11:3 ...

  6. (笔记)Linux下system()函数的深度理解(整理)

    注:从其它地方转的非常好的一篇文章,值得深究! 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数 ...

  7. [转载]Linux下关于system调用

    曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入.只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值.它所执行命令的返回值以及命令执行失败原 ...

  8. linux system函数引发的错误

    转: https://my.oschina.net/renhc/blog/54582 先看一下问题 简单封装了一下system()函数:   int pox_system(const char *cm ...

  9. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

随机推荐

  1. datetime之 utcnow 和now的用法

    from datetime import datetime print(datetime.now()) 本地时间 print(datetime.utcnow()) 国际时间

  2. 进阶篇:4.3)DFA设计指南:宽松公差及人性装配及其他

    本章目的:设计需要为装配考虑,给他们提供各种优待,装配才能做出好产品. 1.前言 机械贴合现实而软件远离现实. 越是学习机械设计的原则,越是感觉他们和一些做人做事的道理相同的. 如,机械设计原则都是有 ...

  3. hiho# 1398 最大权闭合子图 网络流

    题目传送门 题意:给出n个活动,m个人,请人需要花费$a[i]$的钱,举办一次活动可以赚$b[i]$的钱,但是需要固定的几个人在场,一个人只需要请一次后就必定在场,问最大收益. 思路: 下列结论来自h ...

  4. (Android 即时通讯) [悬赏],无论是谁发现一个漏洞奖励人民币1000元!

    悬赏,无论是谁发现一个漏洞奖励人民币1000元!   3Q Android 手机版即时通讯系统正式推出,可与电脑版 地灵(http://im.yunxunmi.com) 即时通讯系统互通!  适用于: ...

  5. 使用NHibernate(6)-- HQL && ICriteria 简单介绍

    1,HQL. HQL是NHibernate特有的查询方式,早先的java语法还没有类似Linq的Jinq,所以Hibernate就弄了一套自己的查询语言,NHibernate移植的时候把这种语言也一块 ...

  6. Python爬虫学习:Python内置的爬虫模块urllib库

    urllib库 urllib库是Python中一个最基本的网络请求的库.它可以模拟浏览器的行为发送请求(都是这样),从而获取返回的数据 urllib.request 在Python3的urllib库当 ...

  7. eclipse修改Properties资源文件的默认编码

    在eclipse下,打开window-->preferences-->general-->content Types-->java Properties File 将其编码方式 ...

  8. WPF EventAggregator(基于EventAggregator的事件发布及订阅)

    一.EventAggregator简介 EventAggregator是Prism中专门处理ViewModel与ViewModel之间事件传递的类对象,它提供了针对事件的发布方法和订阅方法,所以可以非 ...

  9. sql中字符串连接

    有时候我们需要将由不同栏位获得的资料串连在一起,每一种数据库都提供一定的方法来达到这个目的,比如: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: + ...

  10. UTF-8编码

    UTF-8是UNICODE的一种变长度的编码表达方式<一般UNICODE为双字节(指UCS2)>,它由Ken Thompson于1992年创建,现在已经标准化为RFC 3629.UTF-8 ...