当前位置: 首页 > news >正文

操作系统学习(一)--概述启动过程

操作系统之概述

L1. 什么是操作系统

  • 计算机硬件和应用之间的一层如软件,高效的使用硬件
  • CPU管理,内存管理,终端管理,磁盘管理,文件管理等
    MnsNqP3.png

  • 能够修改操作系统,认真做8个实验
    xmjcp3q.png

ODSoAie.png

L2 进入操作系统内部

  • 计算机怎么工作的???

  • 图灵机模型
    3mxGeHM.png
  • 从图灵机到通用图灵机
  • 设置控制器,相当于当前的应用程序
    7t1U8AQ.png
  • 计算工作:取指执行
  • PC程序计数器,自动执行后面的
    fo2Iq80.png

  • 计算机启动的过程
  • cs断寄存器,和ip断寄存器偏移;cs和ip合在一起构成内存地址
  • 电脑启动的时候,内存固有一段代码程序,在0xffff0处
  • 1个扇区5121字节,0磁道0扇区操作系统的引导扇区,这512个字节里面写的什么,其他指令在这之后执行
  • 引导扇区代码bootsect.s汇编代码
  • 产生启动logo

mZzLzbR.png

5mHmfJk.png

  • 启动执行的过程

kXpHTaY.png

L3 操作系统启动

  • 将磁盘的操作系统读入到内存中(加载系统)
  • 然后就是setup,s汇编,初始化过程,读入内存大小
  • 完成OS启动前的设置,获得硬件上的各种信息,生成各种管理表,数据结构,方便后续管理
  • 从0地址开始是操作系统,之上是各种应用程序

  • system模板执行,该模块的第一部分代码head.s,多文件编译而成。
  • 4k一页,初始化内存页面
  • 操作系统启动过程:读入硬件参数,然后初始重要的管理硬件的数据结构。
    iWm0ENc.png

L4操作系统的接口

  • 命名行
    xs3tnwF.png
  • 图形按钮,消息处理函数,从消息队列中获得消息GetMessage
    GjB68Ge.png
  • 普通的C函数+重要的函数(操作系统的
  • 口,由系统提供,称为系统调用)
  • 系统调用的常见函数
    edhqdCq.png
  • 应用程序如果调用的各种操作系统共同的接口,这样的应用程序就能在各种操作系统下运行。
  • POSIX文档,查询系统调用函数。

L5系统调用的实现

  • 系统调用就是调用重要的函数
  • 应用程序想访问操作系统的的内核函数,问什么不能直接调用。系统安全考虑,不能随意访问
    ZFeVJZZ.png

  • 主动进入内核的方法,int中断
    exaJQXA.png
    3KpXEAb.png
    BFRAxek.png

L6操作系统历史

  • 1965-1980多道程序,作业之间的切换和调度成为核心。多进程和进程管理概念萌芽。当前任务执行不下去的时候才切换。
  • 1965-1980分时系统,不同人不同时间控制一段作业,核心仍然是任务切换,这个是定时切换。windows server就是多人操作。
  • 1980-1990Unix成功。
  • 1990-2000Linux成功。
    sgIkF9w.png

  • PC与DOS:CP/M写命令让用户用,执行命令对应的程序,单任务执行。
  • Bill Gates8800开发了BASIC解释器,开发了FAT管理(文件)磁盘
  • 走的符合人们使用习惯的路线
    lH6kanv.png

  • 还有Mac OS && ios核心是Unix.
    GbUYuLV.png

L7我们的任务

  • 具体的框图
    86gyFwt.png
  • 更具体的说明,设备文件
    oSgmYSv.png

相关文章:

  • StatusBar、ActionBar tips
  • String类:String类的简介和字符串常用接口
  • freemarker遇见的BUG1
  • 棋盘覆盖问题
  • Theano - 导数
  • Windows系统查看并清理缓存
  • 数据结构
  • 本地运行Tachyon(译)
  • springboot(十四):springboot整合shiro-登录认证和权限管理
  • 是反反复复
  • 使用Keil MDK以及标准外设库创建STM32工程
  • Genymotion 插件在 Eclipse 和 Android Studio 中点击后无法初始化 Initialize Engine: failed 解决方法...
  • SQL --max使用
  • 11款开放中文分词引擎大比拼
  • 程序员入行须知
  • axios 和 cookie 的那些事
  • CSS相对定位
  • Iterator 和 for...of 循环
  • javascript面向对象之创建对象
  • MySQL用户中的%到底包不包括localhost?
  • node和express搭建代理服务器(源码)
  • Sass 快速入门教程
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue2.x学习三:事件处理生命周期钩子
  • 测试如何在敏捷团队中工作?
  • 分享一份非常强势的Android面试题
  • 诡异!React stopPropagation失灵
  • 近期前端发展计划
  • 如何选择开源的机器学习框架?
  • 入口文件开始,分析Vue源码实现
  • 算法-插入排序
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 我与Jetbrains的这些年
  • 系统认识JavaScript正则表达式
  • 学习ES6 变量的解构赋值
  • 一个完整Java Web项目背后的密码
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • k8s使用glusterfs实现动态持久化存储
  • #define
  • (c语言)strcpy函数用法
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)Mysql的优化设置
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET构架之我见
  • .Net下的签名与混淆
  • // an array of int
  • @Builder用法
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestBody详解:用于获取请求体中的Json格式参数