No one can do all things, learn to be good at use what others already did.

  • Most computers have two modes of operation: kernel mode and user mode. The OS is the most fundamental piece of software and runs in kermel mode(also called usperivosr mode). In this mode, OS has complete access to all the hardware and can execute any instruction th machine is capable of exectuing.
  • The rest of the software runs in user mode, in which only a subset of machine instructions are available. In particular, those instructions that affect control of machine or do I/O are forbidden to user-mode program.
  • The user interface program, shell or GUI(Launcher or home screen or destop), is the lowest level of user-mode program, and is used to allow uer to start other programs which make heavy use of the OS.
  • OS perform two basically unrelated functions:providing application programmer a clean abstract set of resources instead of the messy hardware ones and managing and managing these hardware resource.
  • Every hardware device has its controler chip, which has some command registers and data registers and status registers. What we shall do is to use machine instructions to operate these device registers with defined-well address(MMP) for reading and writing.
  • Abstraction is the key to managing complexity and one of the keys to understanding OS.
  • The job of the OS is to create/define good abstractions and then implement and manage the abstract objects thus created.
  • One of the major tasks of the OS is to hide the hardware and present programs with nice,clean, elegant, consistent, abstractions wo work with instead.
  • Top-down view, Bottom-Up view.
  • The CPU and memory are not the only resource that the OS must manage. I/O devices also interact heavily with the OS.
  • I/O devices generally consist of two parts: a controller and the device itself. The controller is a chip or a set of chips that physically controls the device.It accepts commands from the the OS, intialize the control regitser to set working way and read data from data register or write data to data registers.
  • The softeware that talks to a controller, giving it commands and accepting responses, is called a device driver.
  • Every device controller has a small number of registers that are used to communicate with it.
  • The collection of all the device registers forms the I/O port space, mapping to the specific memory via MMU
  • The device registers are mapped into the OS's address space, so they can be read and written like ordinary memory words, another way to interact with device registers is using special CPU instructions for I/O operation with defined port address.
  • OS normally use interrupt mechanism to interact with device driver via special interrupter controller connected to CPU.
  • The CPU talks to the PCI bridge chip over the local bus, and the PCI bridge chip talks to the memor over a dedicated memory bus.
  • Before plug and play, each I/O card had a fixed interrupt request level and fixed address for its I/O registers.
  • What plug and play does is have the system automatcially collect information about the I/O devices, centrally assign interrupt levels and I/O address, and then tell each card what its numbers are.
  • Window CE Driver Model:
    • Device Name: XXX_Init(), XXX_DeInit(), XXX_PowerDown(), XXX_PowerUp(),XXX_IOControl, XXX_Open(),XXX_Close(),XXX_Seek(),XXX_Read(), XXX_Write()
    • Use a class to define the detailed implementation
    • Create a class object (pointer) which is returned as Handle
    • Convert Handle into pointer to object, then call method of class
    • Create thread and event to handle interrupt, in thread there is a for(;;) loop with WaitForSingleObject() to wait for interrupt event, after done  call InterruptDone()
    • Register Interrupt handler which just signal a event.
    • Initialization method within class to access device's control registers, do some configuration, including interrupt handler
    • In thread, when interrupt event is coming, it will  read data from or write data into device's data registers.
    • Write Driver Information to registry and project.blb
  • Process And Thread
    • The most central concept in any OS is the process: an abstraction of a running program.
    • There are four principal events that cause processes to be created.
    • When an OS is booted, typically serveral processes are created.Some of these are foreground processes, interacting with users and perform work for them. Others are background processes with some specific function(such as Web Server).
    • The fork system call creats an exact clone of the calling process.After the fork, the two processes, the parent and child, have the same memory image, the same environment strings, and the same open files.
    • Some of the process run programs that carry out commands typed in by a user; other processes are part of the system and handle tasks such as carrying out requests for file services or managing the details of running a disk or a tape drive.
    • When a disk interrupt occurs, the system makes a decision to stop running the current process and run the disk process which was blocked waiting for that interrupt.
    • Instead of thinking about interrupts, we can think about user processes, disk processes, termianl processes, and so on, which block when they are waiting for something to happen.
    • Here the lowest level of the operating system is the scheduler, with a variety of processes on top of it.All the interrupt handling and details of actually starting and stopping processes are hidden away in what here called the scheduler, which is actually not much code.
    • The rest of the OS is nicely structured in process form.
    • To implement the process model, the OS maintains a table(an array of structures or a list of structures),called the process table, with one entry per process. Or it can be called process control block.
    • Process Table includes: process state, PC, SP, Memory allocation, the status of its open files, its accounting and scheduling information, and everything else about the process that must be saved when the process is switched from running to ready or blocked state so that it can ben restarted later as if it had never been stopped.
    • Associated with each I/O class is a location (typically at a fixed location near the bottom of memory) called the interrupt vector. It contains the address of the interrupt service procedure.
    • When interrupt come in, the interrupt service handler will run, and at the same time, before running the interrupt hardware will push current process's information into stack.
    • Skeleton designed when an interrupt occurs:
    1. Hardware stacks program counter(PC), etc;
    2. Hardware loads new program ounter(PC) from interrupt vector;
    3. Assembly language procedure saves registers;
    4. Assembly language procedure sets up new stack;
    5. C interrupt service runs(typically reads and buffers input);
    6. Scheduler decides which process is to run next;
    7. C procedure retursn to the assemly code;
    8. Assemly language procedure starts up new current process
    • ddd
    • dd

Modern Operating System的更多相关文章

  1. 《modern operating system》 chapter 5 Input and output 注意事项

    Input / Output It should also provide an interface between the devices and the rest of the system th ...

  2. 《modern operating system》 chapter 6 DEADLOCKS 笔记

    DEADLOCKS Both processes are blocked and will remain so forever. This situation is called a deadlock ...

  3. Portable Operating System Interface for uni-X

    https://kb.iu.edu/d/agjv Short for "Portable Operating System Interface for uni-X", POSIX ...

  4. General-Purpose Operating System Protection Profile

    1 Protection Profile Introduction   This document defines the security functionality expected to be ...

  5. book-rev8 Chapter 0 Operating system interfaces

    Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...

  6. DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered

    我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint ...

  7. The World's Only Advanced Operating System

    The World's Only Advanced Operating System

  8. Unable to open the physical file xxxx. Operating system error 2

    在新UAT服务器上,需要将tempdb放置在SSD(固态硬盘)上.由于SSD(固态硬盘)特性,所以tempdb的文件只能放置在D盘下面,而不能是D盘下的某一个目录下面. ALTER  DATABASE ...

  9. CREATE FILE encountered operating system error 5(Access is denied.)

    这篇博文主要演示"CREATE FILE encountered operating system error 5(Access is denied.)"错误如出现的原因(当然只是 ...

随机推荐

  1. [整理]Unicode 与 UTF8

    目录 先上总结 ASCII utf-8 编码规则 UTF-16 其他 先上总结 Unicode 是一个符号集, 规定了所有符号的二进制编号. UTF8 是unicode的一种编码方式(存储, 传输方式 ...

  2. 【HNOI2019】部分题简要题解

    题意懒得写了 LOJ Day 1 T1 鱼 个人做法比较猎奇,如果有哪位大佬会证明能分享一下的话感激不尽. 题解:枚举鱼尾和鱼身的交点D,将所有其他点按照到D的距离排序,距离相同的分一组. 感性的理解 ...

  3. C#二进制位算 权限

    关于权限管理,之前所做的都是一个权限对应一条数据,比方A页面有增删改查四个权限,那么用户在权限管理表中相对应AA页面有四条记录.后来改用二进制运算,发现省事很多. 首先说下位运算 熟悉一下操作符,懒得 ...

  4. This operation is not available unless admin mode is enabled: FLUSHDB

    报错:  This operation is not available unless admin mode is enabled: FLUSHDB 参考内容: https://www.cnblogs ...

  5. OpenERP 中的on_change方法总结

    1.xml中应为on_change=""的形式 2.py文件中 self,cr,uid,ids为必备参数,后面的参数根据xml文件中的参数的数量而定 3.return的是一个字典, ...

  6. (转)linux运维必会MySQL企业面试题

    linux运维必会MySQL企业面试题  老男孩教育运维班全体学员MySQL必会企业面试题最实战.最细致.最落地的运维实训基地,老男孩教育连续多年国内平均就业工资最高! 数据库的重要性是所有技术里最核 ...

  7. 使用gdb进行写操作

    使用gdb调试程序,读写操作是很普遍的事情.其中,读操作包括: 读取某个变量的值 读取某个内存地址里的内容 读取某个寄存器的值 对应地,写操作包括: 修改某个变量的值 修改某个内存地址里的内容 修改某 ...

  8. 剑指offer(41-45)编程题

    41.入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. class Solution { public: vector&l ...

  9. JVM执行篇:使用HSDIS插件分析JVM代码执行细节--转

    http://www.kuqin.com/java/20111031/314144.html 在<Java虚拟机规范>之中,详细描述了虚拟机指令集中每条指令的执行过程.执行前后对操作数栈. ...

  10. 如何将本地文件通过终端上传到linux服务器或从linux主机下载文件到本地

    第一种方式: SecureCRT下上传文件只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器当前路径下.下载文件只需在shell终端仿 ...