什么是操作系统?

先看下面的一张图

你会联想到什么?没错这是整个计算机啊。
我们讲计算机是用来帮助人们解决一些实际问题的工具
那我们不妨先探究一下,在屏幕上输入“hello”,计算机内部都会进行哪些工作吧。

输出“hello”的工作

  1. cpu发指令给内存,把内存地址为300的地方东西拿出来,写入到777显存地址。屏幕出现h
  2. 同理e,l,l,o。

这是系统内部是这么操作的,然而实际中我们是怎么操作的呢?
我们的程序是这样的:printf("hello")
而这时计算机已经穿上了衣服。


直接就会在屏幕上面输出“hello”!
所以,我们有了操作系统以后,我们就能从应用程序,透过操作系统,来直接操作计算机硬件。

所以我们知道了,所谓操作系统,就是在硬件之上包了一层软件,让我们使用计算机更加便捷和高效

准确的说操作系统很难,很难,绝知此事要躬行啊!!!

打开操作系统

上层应用通过操作系统提供的接口,来使用操作系统。

让我们打开钢琴的盖子,看看操作系统内部是怎么运作的吧。
从打开电源开始,计算机做了什么事情呢?要解决这个问题,就要解决计算机是怎么工作的呢?

计算机的工作方式。

图灵

1936,英国图灵提出了一种模型。
图灵机:

由此可以看出,图灵机和现代的计算机还有一定的距离,所以演化成了通用图灵机。

控制器首先读逻辑,比如读进来加法的逻辑,那他就做加法的运算,如果读进来的是乘法的逻辑,那么他就做乘法的运算。这更像是一种通用的模型,也就是所谓的通用图灵机。这就很像计算机了,把程序载入进来,就会执行相应的功能。

冯诺依曼

1946年,冯诺依曼提出存储程序思想。
把程序和数据存放在内存里,,然后载入到控制器中解释执行,计算机就会一步步的完成程序的工作。

一些知识:

IR的全称应该是Instructinon register
指令寄存器是用来存放指令的,存放当前正在执行的指令,包括指令的操作码,地址码,地址信息

PC的全称是program counter
程序计数器,是用来计数的,指示指令在存储器的存放位置,也就是个地址信息
在汇编中用寄存器IP表示pc

具体的操作流程,

  1. 将程序载入到(存储器)内存中
  2. 用PC指针指向程序的存放地址。
  3. 取址执行。取址执行,,,,取址执行。。。自动的进行

所以计算机的工作方式,用四个字概括就是取址执行

打开操作系统的第一句指令

也就是PC=?
在X86 PC的执行过程:

内存中首先有一个固化的区域,存在着基本的输入输出功能,叫做ROM BIOS,固化在内存的0xFFFF0处。

开机前,硬件自动的设置好CS=0xFFFF;IP=0x0000处(CS:段寄存器 iP:段内的偏移。)形成的地质就是CS<<4+IP

从0磁道0扇区读入1个扇区 也就是 512 个字节,读到了0x7c00处,这个0磁道0扇区就是操作系统的引导扇区。

引导扇区代码:bootsect.s

编译相关知识

代码解析

注意:以s结尾的是汇编代码。

这段代码 从start开始:

mov ax, #BOOTSEG     mov ds,ax

也就是说上面的代码的作用是 bios将bootsect从7c00处挪到了9000这个地方。

jumi 间接跳转 go 赋给 ip ,INITSEG 赋给cs,这样就形成了一个地址,想一想这样跳到哪里去了呢?

现在bootsect已经挪到了9000的这个地方,所以里面go的地址,也已经挪到了另一个地址,所以调转的还是下一行代码go所在的地址!

继续顺序执行。

int 0x13 中断

从第2个扇区开始读4个扇区,载入setup

读入setup模块后

bios int 0x10 中断

是显示中断。bp 表示的要显示的字符在内存中的位置。所以要把msg1的字符数据打到光标的位置,这就需要获取一下光标的位置 xor bh,bh

总结

bootsect.s做了什么事情呢?

首先我们知道的操作系统本来在硬盘上面,电源打开,就必须从磁盘载入到内存中,才会取址执行,那么bootsect.s就做了这件事。(分段读入)具体如下:

1、 先读入setup 显示logo。

  1. int 0x13号中断,将system读进来。现在为止,操作系统就在内存中了!

现在bootsect.c执行完毕了,下面应该把控制权转给setup了,利用jumpi 0,SETUPSEG 段间跳转可以实现。cs《4 + ip

操作系统的启动

setup模块 即setup.s

未完待续。。。

【操作系统学习笔记】操作系统基础相关推荐

  1. 操作系统学习笔记目录(暂时不全223)

    操作系统学习笔记目录章节汇总 (暂时不全,目前只有第一章+第二章-浅谈线程,进程-2020.3.6) 文章目录 操作系统学习笔记目录章节汇总 1.打开钢琴的盖子(序章) 1.1-操作系统的概念(定义) ...

  2. 操作系统学习笔记-01-操作系统的概念(定义),功能和目标

    操作系统学习笔记-2019 王道考研 操作系统-01-操作系统的概念(定义),功能和目标 文章目录 1-操作系统的概念(定义),功能和目标 1.1常见的操作系统 1.2概念(定义) 1.3-操作系统的 ...

  3. ROS机器人操作系统学习笔记(三)ROS通信架构

    ROS机器人操作系统学习笔记(三)ROS通信架构 ROS的通信架构是ROS的灵魂,也是整个ROS正常运行的关键所在.ROS通信架构包括各种数据的处理,进程的运行,消息的传递等等.本章主要介绍了通信架构 ...

  4. 操作系统学习笔记-2.1.5线程概念和多线程模型

    操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...

  5. 操作系统学习笔记-2.1.4进程通信

    操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...

  6. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

  7. 操作系统学习笔记-2.1. 2进程的状态与转换

    操作系统学习笔记-2019 王道考研 操作系统-2.1. 2进程的状态与转换 文章目录 2进程的状态与转换 2.1知识概览 2.2进程的状态-三种基本状态 2.3进程的状态-另外两种状态 2.4进程状 ...

  8. 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征

    操作系统学习笔记-2019 王道考研 操作系统-2.1.1.进程的定义.组成.组织方式.特征 文章目录 2.1.1.进程的定义.组成.组织方式.特征 1.1知识概览 1.2进程的定义 1.3进程的组成 ...

  9. 操作系统学习笔记-06-系统调用

    操作系统学习笔记-2019 王道考研 操作系统-06-系统调用 文章目录 6-系统调用 6.1 知识概览 6.2什么是系统调用?有什么作用? 6.3系统调用与库函数的区别 6.4系统调用背后的过程 6 ...

  10. 操作系统学习笔记-05-中断和异常

    操作系统学习笔记-2019 王道考研 操作系统-05-中断和异常 文章目录 5-中断和异常 5.1知识概览 5.2 中断机制的诞生 5.3中断概念和作用 5.4中断的分类 5.5 外中断的处理过程 5 ...

最新文章

  1. 米家摄像头固件_小米摄像头被谷歌紧急封禁!别人的设备,能看到你家现场
  2. JetBrains 第二轮:再为免费全家桶续命三个月
  3. NetBeans IDE 实现php开发自动上传到开发服务器 的设置
  4. MySQL分组查询—添加筛选的总结
  5. python game_Python游戏
  6. 谷歌收购DNNresearch能获得什么?
  7. Android版本下载以及切换
  8. CNode社区(React)
  9. 转载:技术大停滞——范式春梦中的地球工业文明1:文明与技术
  10. “小而美”走到十字路口,吉利或收购魅族助车机闭环
  11. B站4K视频下载方法
  12. python迭代器与生成器答案,彻底搞懂python 迭代器和生成器
  13. 一分钟了解光纤、单模光纤、多模光纤
  14. poj2187 旋转卡(qia)壳(ke)
  15. pycharm如何设置官方中文?pycharm如何汉化?pycharm终于支持官中了!!!
  16. java word 批注_Java 添加、回复、修改(替换)、删除Word批注
  17. 各种艺术字、图片在线制作
  18. P4 compiler(p4factory) 的安装和使用
  19. 科普:如何找到有趣的网站?
  20. 德勤发布《2023科技、传媒和电信行业预测》报告

热门文章

  1. vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制
  2. 分布式系统关注点(6)——「负载均衡」到底该如何实施?
  3. 产品固件(系统)升级——curl/wget
  4. JavaScriptjQuery.检测相等和存在
  5. (转)HTML5开发中Access-Control-Allow-Origin跨域问题
  6. Winform 中 dataGridView 导出到Excel中的方法总结
  7. 程序执行系统VC++程序出现“试图执行系统不支持的操作”
  8. [转载].怎样制作一个简单ip,以方便在Quartus II和Nios II中使用?
  9. 高薪诚聘游戏引擎研发,有意者请与我联系!
  10. 关于在CLASSWIZARD中找不到工作区间中的类的解决方法