操作系统1

254 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情

为什么要学习操作系统

1.计算机基础,面试经常要考的辣

2.可以通过学习操作系统来增加内力

3.觉醒体内的编程力量

到底什么是操作系统

管理软/硬件资源的,为程序提供服务的程序

image.png 1950s到1960s的重大改变

大内存的概念:

可以同时多个程序放到内存中,但此时只有一个cpu

同时将多个程序载入内存是一项巨大的能力·有了进程(process)的概念

  • 进程在执行I/O时,可以将CPU让给另一个进程·在多个地址空间隔离的程序之间切换
  • 虚拟存储使一个程序出bug不会crash整个系统

操作系统中自然地增加进程管理API

今天的操作系统

通过“虚拟化”硬件资源为程序运行提供服务的软件。 空前复杂的系统之一

  • 更复杂的处理器和内存

    • 非对称多处理器(ARM big.LITTLE; Intel P/E-cores)
    • Non-uniform Memory Access (NUMA)
    • 更多的硬件机制Intel-VT/AMD-V,TrustZone/SGX, ,TSX,...
  • 更多的设备和资源

    • 网卡、SSD、GPU、FPGA...·
  • 复杂的应用需求和应用环境

    • 服务器、个人电脑、智能手机、手表、手环、loT/微控制器..

理解操作系统:三个根本问题操作系统服务谁?

  • 程序〔状态机

  • 课程涉及︰多线程Linux应用程序

    (设计/应用视角)操作系统为程序提供什么服务?

    • 操作系统=对象+API
    • 课程涉及∶POSIX+部分Linux特性

    (实现/硬件视角)如何实现操作系统提供的服务?

    • 操作系统=C程序
    • 完成初始化后就成为interrupt/trap/fault handler
    • 课程涉及: xv6,自制迷你操作系统

怎么学操作系统

1.是一个合格的操作系统用户 - 会STFW/RTFM自己动手解决问题

- 不怕使用任何命令行工具
    vim, tmux, grep, gcc, binutils,...

2.不惧怕写代码

  • 能管理一定规模(数千行)的代码

  • 能在出bug时默念“机器永远是对的、我肯定能调出来的”

    • 然后开始用正确的工具/方法调试

      给“学渣"们的贴心提示:补基础、补基础、补基础

操作系统没有传说中那么复杂

  • 程序视角:对象+API
  • 硬件视角:一个C程序 结果慎重考虑,决定先去学几天的c语言再回来看这个视频。视频中都是用c语言进行实现的,因此需要有c语言的基础才能更好的往下学习。等着,操作系统