感觉在学习Android系统的过程中,越来越发现自己的计算机相关基础比较薄弱。新开一个篇章记录学习操作系统,纸上得来终觉浅,还是需要不断学习。

0猜你喜欢

操作系统系列文章

操作系统学习笔记 1概述

操作系统学习笔记 2操作系统介绍

操作系统学习笔记 3内存管理

操作系统学习笔记 4非连续内存分配

操作系统学习笔记 5虚拟内存

操作系统学习笔记 6页面置换算法

操作系统学习笔记 7进程管理

操作系统学习笔记 8CPU调度

操作系统学习笔记 9同步&互斥

操作系统学习笔记 10信号量&管程

操作系统学习笔记 11死锁

操作系统学习笔记 12进程间通信

操作系统学习笔记 13文件系统

1.1课程内容

  • 基本概念及原理
  • 操作系统介绍
  • 中断及系统调用
  • 内存管理
  • 进程及线程
  • 调度
  • 同步
  • 文件系统
  • I/O 子系统

通过在uCore操作系统上做实验

https://github.com/chyyuu/os_course_info

https://github.com/yusong-shen/mooc_os_lab

操作系统实验

  • 实验0:准备
  • 实验1:系统启动及中断
  • 实验2:物理内存管理
  • 实验3:虚拟内存管理
  • 实验4:内核线程管理
  • 实验5:用户进程管理
  • 实验6:CPU调度
  • 实验7:同步与互斥
  • 实验8:文件系统

1.2什么是操作系统

  • 从用户角度上,操作系统是一种控制软件
  • 管理应用程序
  • 为应用程序提供服务
  • 杀死应用程序
  • 资源管理
  • 管理外设、分配资源

1.2.1操作系统架构层次

在于硬件之上,在应用程序之下。

操作系统位于应用软件之下(办公软件或者是视频播放软件),为应用软件提供服务支撑。

LInux、WIndows、Android界面属于shell,而不是内核(Kernel),内核使我们的研究重点,在shell之下。

1.2.2硬件资源最主要的三大块

CPU,内存,磁盘。

其他还有,声卡,网卡,显卡

1.2.3操作系统内部组件

  • CPU调度器
  • 物理内存管理
  • 虚拟内存管理
  • 文件系统管理
  • 中断处理与设备驱动

1.2.4OS Kernel特征

  1. 并发

计算机系统中存在多个运行的程序,需要OS管理和调度

  1. 共享

“同时"访问,互斥共享

  1. 虚拟

利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务

  1. 异步

程序的执行不是一贯到底,而是走走停停,向前推荐的速度不可预知。但只要运行环境相同,OS需要保证程序运行的结果也要相同。

并行是一个人边看书边听音乐,并发是一个人先看书,在听音乐,两件事不能同时

1.3为什么要学习操作做系统

结合许多不同的课程:程序设计语言,数据结构,算法,计算机体系结构,材料,操作系统概念和原理,源代码,技能,操作系统的设计和实现。

虽然目前已经有喝多操作系统,windows,linux。但是操作系统还在不停地发展,在工控等各种领域有强烈的需求。操作系统很酷,很有用,有挑战。

1.3.1操作系统:计算机科学研究的基石

  • 计算机系统的基本组成部分
  • 有硬件的发展和应用需求所驱动
  • 学术和工业的持续发展

1.3.2关于操作系统顶级会议

  • SOSP(每两年,1967…)
  • USENIX(每两年,1994…)

1.3.3操作系统特点

  1. 操作系统很大

    windows XP有4500w行,代码量巨大,不可能完全掌握。目标是理解其核心内容。

  2. 操作系统管理并发

    并发导致有趣的编程挑战

  3. 操作系统代码管理原始硬件

    时间依赖行为,非法行为,硬件故障

  4. 操作系统必须是高效的

    低耗CPU、内存、磁盘的

  5. 操作系统出错,就意味着机器出错

    操作系统必须比用户程序拥有更高的稳定性

  6. 操作系统是是系统安全的基础

1.3.4操作系统需要权衡

  • 空间与时间
  • 性能和可预测性
  • 公平和性能

1.3.5硬件方面,操作系统需要

  • 良好的硬件管理
  • 合理的资源分配
  • 例如:硬盘速度跟CPU、内存相差很多,操作系统需要协调处理。

1.4如何学习操作系统

  • 我听到的我会忘记
  • 我看到的我能记住
  • 只有我做过的我才理解

1.5操作系统实例

  • UNIX BSD(伯克利软件发行版)
  • Linux家族
  • Windows家族

1.6操作系统的历史

1.6.1早起计算机使用织带机传输程序和数据

操作系统只起到加载作用

1.6.2CPU等硬件快速发展,计算机速度得到提升,性能未得到充分利用。

1.6.3内存的容量越来越大,CPU执行多个程序

1.6.4为了更好地利用计算机资源,并且更好地和用户交互,出现了分时系统。

1.6.5个人电脑操作系统

1.6.6网络的快速发展,出现了分布式的操作系统

1.6.7松、紧耦合系统

1.7操作系统的结构

1.7.1比如有分层的结构

1.7.2比如用于实验的uCore操作系统

1.7.3学术界存在另一种更加极端的架构,“外核”

1.7.4VMM,跑在传统的OS之下

VMM将单独的机器接口转换成很多的幻象,每个这些接口(虚拟机)是一个原始计算机系统的有效副本,并完成所有的处理器的指令。

无虚拟机和虚拟机区别

1.8小结

主要包括什么是操作系统,为什么学习操作系统,如何学习操作系统,操作系统实例,操作系统的演变,操作系统结构。