Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSAPP 计算机系统漫游 笔记

CSAPP 计算机系统漫游 笔记

作者头像
wywwzjj
发布于 2023-05-09 06:36:02
发布于 2023-05-09 06:36:02
1720
举报

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

CSAPP 最大的魅力在于,每章的前言会站在程序员的角度跟你分析,为什么要学这些知识,然后在正文里清晰的阐述这些问题的答案。

操作系统是什么?提供了什么功能?

  • 用户角度:操作系统是一个控制软件
    • 管理应用程序
    • 为应用程序提供公共服务(比如底层的 IO、以及网络协议栈等各种底层 API
    • 进程管理
  • 硬件角度:资源管理
    • 管理外设、分配资源
      • CPU 调度器
      • 物理内存管理
      • 虚拟内存管理
      • 文件系统管理
      • 中断处理与设备驱动
  • 所处位置:硬件之上,应用程序之下
  • 操作系统内核特征
    • 并发(注意区分并发与并行,并发强调的是一段时间,并行是一个时间点,所以并行必须是多核)
    • 共享:
      • “同时”访问
      • 互斥共享
    • 虚拟(为上层提供底层的抽象)
    • 异步
  • 内核时被信任的第三方
  • 只有内核可以执行特权指令

操作系统实验:

  • 系统启动及中断
  • 物理内存管理
  • 虚拟内存管理
  • 内核线程管理
  • 用户进程管理
  • CPU 调度
  • 同步与互斥
  • 文件系统

信息 = 位 + 上下文

编码是一切信息处理的基础。

程序被其他程序翻译成不同的格式

编译过程:

源程序(hello.c)=> 预处理器 (hello.i) => 编译器(hello.s) => 汇编器(hello.o) => 链接器(可执行)

  • 预处理:以 # 开头的,直接修改源程序。比如 #include <stdio.h>,将直接把文件插入进来。
  • 编译器:将此文本文件翻译成汇编语句。
  • 汇编器:将汇编语句翻译成机器语言指令。
  • 链接器:将用到的链接库合并。

了解编译系统如何工作大有益处

  • 优化程序性能
  • 理解链接时出现的错误
  • 避免安全漏洞

处理器读并解释储存在内存中的指令

系统的硬件组成

计算机:

  • 以硬件为基础
  • 以软件扩充其功能
  • 以执行程序的方式提现功能

组成:

  • 总线:bus,各部件信息传输的渠道
  • I/O 设备:输入输出设备。输入信息 => 处理信息 => 输出信息
  • 主存
  • 处理器

运行 hello 程序

高速缓存至关重要

存储设备形成层次结构

操作系统管理硬件

进程

线程

一个进程可以由多个线程构成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

虚拟内存

为每个进程提供了一个假象,就好像每个进程都独占了主存。

每个程序执行时,内存起点都是一样的。

文件

系统之间利用网络通信

Amdahl 定律

并发和并行

抽象的重要性

CPU => 进程

磁盘 => 文件

内存 => 地址空间

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSAPP之计算机系统漫游
什么是计算机系统?计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。如下一个hello程序:
HeaiKun
2020/07/06
4360
深入理解计算机系统 第一章 笔记
将程序翻译成汇编语言,包含程序main的定义,hello.i -> hello.s
MashiroT
2022/10/28
3410
《深入理解计算机系统》阅读笔记--计算机系统漫游
《深入理解计算机系统》,这本书,我多次想要好好完整的读一遍,每次都是没有坚持下去,但是作为一个开发者,自己想要成为为数不多的大牛之一,所以打算这次把这本书完整的好好读一遍,并整理为相关的博客! 书的开头说了一句话:计算机系统是由硬件和系统软件组成,他们共同工作来运行应用程序。 我们通常接触更多的是应用程序级别的,很少关注系统以及系统和硬件的交互,但是如果自己能完全理解计算机系统以及它对应用程序的影响,那将会让我们在软件开发的路上走的更远,也同时可以避免很多问题的发生。 拿最简单的hello.c 程序来说,我
coders
2018/05/28
5100
深入理解计算机系统系列【计算机系统漫游】
操作系统原理是计算机行业基本功,想要成为一名计算机领域的专业人士,必不可少要打好基础。最近打算重点读一读《深入理解计算机系统》这本书,回顾和提升自己对计算机和操作系统的理解。这是第一篇:【计算机系统漫游】。【计算机系统漫游】主要通过跟踪hello程序的生命周期来开始对系统的学习----从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止。本文将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念、专业术语和组成部分。
用户1432189
2018/09/05
6160
深入理解计算机系统系列【计算机系统漫游】
《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游
  接下来的计划是补充下操作系统和计算机组成原理相关的知识。从《深入理解计算机系统》这本书开始吧,系统学习下《深入理解计算机系统》这本书,还有9个Lab可以做下,以便加深理解。初步计划一周一章(不知道行不行),争取在放寒假前做完这些。
嵌入式与Linux那些事
2021/05/20
6980
《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游
抛砖引玉-计算机系统
#include<stdio.h> int main() { printf("hello, world\n"); return 0; }
用户8478399
2022/09/01
2300
抛砖引玉-计算机系统
计算机系统漫游
learn from 《深入理解计算机系统》 编译过程 高速缓存存储器,访问速度非常快 无论是在单核还是多核系统中,一个CPU看上去都像是在并发地执行多个进程,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上 下文切换。 线程运行在进程的上下文中,并共享同样的代码和全局数据。 多线程之间 比 多进程之间 更容易共享数据,也因为 线程 一般来说都 比 进程 更高效。当有多处理器可用的时候,多线程也是一种使得程序可以运行得更快的方法 多核处理器:减少了处理任务时的模
Michael阿明
2022/01/07
4040
计算机系统漫游
计算机系统的漫游
用c语言编写的hello程序实际上是由0和1组成的位(也叫比特)系列,8位被组织在一起叫做字节 . 由ASCII字符构成的文件叫做文本文件,所以的其他文件都称为二进制文件。
code-child
2023/05/30
1890
计算机系统的漫游
计算机系统漫游:贯穿计算机系统所有方面的重要概念
计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
Python进阶者
2021/03/09
3560
计算机系统漫游:贯穿计算机系统所有方面的重要概念
CS15-213 csapp chapter01 计算机系统漫游 学习笔记
源程序实际上就是一个由 0 和 1 组成的位(称为比特)序列,8个位被组成为一组,称为字节。
阳光罗诺
2021/09/28
4700
计算机系统漫游:贯穿计算机系统所有方面的重要概念
计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
江南一点雨
2021/07/15
2840
计算机系统漫游:贯穿计算机系统所有方面的重要概念
《csapp》的学习笔记(一)
刚开始程序员通过编辑器创建并保存了一个文本文件,hello.c。这个实际上是由值0和1组成的位序列,8位为一个字节。系统中的所有信息都是由一串比特组成。区分不同数据对象的唯一方法即使上下文。
哒呵呵
2018/08/06
5100
计算机二级公共知识部分---计算机系统
2. 掌握计算机硬件系统结构,包括 CPU 的功能和组成,存储器分层体系,总线和外部设备。 3. 掌握操作系统的基本组成,包括进程管理、内存管理、目录和文件系统、I / O 设备管理。
云帆沧海
2024/01/31
2190
【万字长文】计算机系统概述
传统计算系统采用分层方式构建,也即计算机系统是一个层次结构的系统,通过向上层用户提供一个抽象简洁的接口而将较低层次的实现细节隐藏起来。计算机解决应用问题的过程就是将不同抽象层进行转换的过程。由于并非每位朋友对计算机系统和原件工作原理有所了解,但Linux系统又是基于这些硬件的基础方可正常运行,同时又因为当代计算机的UI已经做的如此完美易用,以至于占比很高的IT从业人员忽略计算机硬件,但对于高级资深IT从业人员来讲,知其一不知其二对于个人技能树的发展影响深远,根基不稳大厦将倾,因此我们也将会较多篇幅为大家介绍关于计算机的一系列知识。
运维部落
2020/03/26
1.2K0
【万字长文】计算机系统概述
计算机系统 Lecture 1:虚拟内存详解
因此,现代计算机系统通常把各种不同存储容量、存取速度和价格的存储器按照一定的体系组成多层结构,以解决存储器容量、存取速度和价格之间的矛盾。
Flowlet
2023/08/11
5230
计算机系统 Lecture 1:虚拟内存详解
新名词|什么是「电源」程序员?
计算机系统(A computer system) 是由硬件和软件组成的,它们协同工作运行程序。不同的系统可能会有不同实现,但是核心概念是一样的,通用的。
cxuan
2020/03/27
3320
深入理解计算机系统(1.1)------Hello World 是如何运行的
IT可乐
2018/01/04
1.9K1
深入理解计算机系统(1.1)------Hello World 是如何运行的
【计算机系统概论】
冯诺依曼机 核心思想:存储程序 工作方式: 任何要计算机完成的工作都要先被编写成程序,然后将程序和原始 数据送入主存并启动执行。一旦程序被启动,计算机应能在不需操 作人员干预下,自动完成逐条取出指令和执行指令的任务。 主要思想:
devi
2021/08/18
1.2K0
程序在计算机中是如何运行起来的(一)
计算机系统是一个由硬件和软件组成的复杂体系,旨在处理数据并执行各种任务。为了理解程序如何运行,首先需要了解计算机系统的基本组成、硬件与软件之间的关系,以及操作系统在其中扮演的关键角色。
Michel_Rolle
2024/08/11
2.7K0
计算机系统要素
源码:https://github.com/felicityin/nand2tetris-rs
谛听
2023/09/23
4020
相关推荐
CSAPP之计算机系统漫游
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档