程序员自我修养读书笔记1——基础回顾

本文深入探讨了操作系统的多个关键方面,包括但不限于多道程序设计、内存管理机制、虚拟存储的实现方式以及线程管理等内容。此外,还介绍了SMP与多核架构、高速及低速设备的区别、系统软件分类以及计算机分层原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

因为是学习笔记,所以只记录相关知识点

1、本书主要内容

  • 编译
  • 静态链接机制
  • 操作系统如何装载程序、动态链接库、运行库标准库
  • 操作系统机制

2、高速和低速设备

  • 南桥: cpu、内存、高速图形
  • 北桥:磁盘、键盘、鼠标

3、SMP和多核

CPU频率在短期内是天花板。 对称多处理器(SMP)

4、系统软件分类

  • 平台型:操作系统内核、驱动、运行库、系统工具
  • 用于程序开发:编译器、汇编器、链接器等

5、计算机分层

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决
在这里插入图片描述

  • 接口(Interface)
    Linux下的Glibc 库提供 POSIX

6、操作系统做什么

6.1 CPU不打盹
  • 多道程序
  • 分时系统
  • 多任务系统(操作系统接管硬件资源)
6.2 设备驱动
驱动程序和操作系统内核一起运行在特权级别。且与操作系统间有一定的独立性,比较灵活。

7、内存不足怎么办

如何将计算机上有限的物理内存分配给多个程序使用

  • 地址空间不隔离
  • 内存使用效率低
  • 程序运行地址不确定

解决上述增加中间层,使用虚拟地址。控制虚拟到物理地址的映射

7.1 隔离

目标: 有第一的地址空间,有自己的CPU, 好像真个程序占有整个计算机而不用关心其他程序。
使得每个进程有自己独立虚拟空间,只能访问自己的地址空间。

7.2 分段
  • 分段: 把一段程序所需要的内存空间大小的虚拟空间映射到某个地址空间
    解决的问题: 1 3
    未解决的问题:2

  • 分页:
    解决分段问题。程序很多数据在一段时间内都不会被用到。可以使用更小颗粒度的内存分隔和映射,于是便有了分页。

    • 虚拟页
    • 物理页
    • 磁盘页

    下边用一个图展示下:在这里插入图片描述
    问题1: Process1 的VP2和VP3不在内存中,程序访问的时候怎么办?
    答: 当进程使用这两个页时,硬件会捕捉到这个信息,就是所谓的 页错误,然后操作系统会接管进程,将VP2和VP3从磁盘中读出来冰装入内存。

问题2: 保护
答:只有操作系统可以做到保护自己和保护进程。后续详解

问题3: 虚拟存储实现
答: MMU
CPU ----virtual Address----> MMU----Physical Address-----> Physical Memory
一般来讲MMU都集成在CPU内部。

8、线程相关

8.1 相关概念

线程状态:

  • 运行
  • 就绪
  • 等待

调度

  • 优先级调度
  • 轮转法

线程类型

  • IO密集型
  • CPU密集型
8.2 线程安全
  • 可重入
    一个函数被重入,表示这个函数没有执行完成,优于外界因素或内部调用,有一次进入该函数执行
  • volatile
  • barrier()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值