首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解计算机系统:进程

内核(Kernel) 一个计算机程序,用来管理软件发出的数据I/O(输入与输出)要求,将这些要求转译为数据处理的指令,交由中央处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系统中最基本的部分...有高达256种不同的异常类型,如出发错误(0)、一般保护故障(13)、缺页(14)、机器检查(18)、操作系统定义的异常(32-127,129-255)、系统调用(0x80)。...如果两个流并发运行在不同的处理器或者计算机,称为并行流(parallel flow)。 私有地址空间(Private Address Space) 一般,进程间地址空间读写保护。...系统调用可以被中断。...PS:列出当前系统中的进程(包括僵尸进程)。 TOP:打印关于当前进程资源使用的信息。 PMAP:显示进程的存储器映射。 /proc:一个虚拟文件系统,以ASCII输出大量内核数据结构的内容。

1.2K91

深入理解计算机系统系列【计算机系统漫游】

操作系统原理是计算机行业基本功,想要成为一名计算机领域的专业人士,必不可少要打好基础。最近打算重点读一读《深入理解计算机系统》这本书,回顾和提升自己对计算机和操作系统理解。...这是第一篇:【计算机系统漫游】。【计算机系统漫游】主要通过跟踪hello程序的生命周期来开始对系统的学习----从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止。...理解编译系统的四个阶段: (1)预处理阶段:读取系统头文件stdio.h的内容,并把它直接插人程序文本中,得到另一个.i结尾的c程序。...5 系统的硬件组成 为了理解运行hello程序时发生了什么,我们需要了解一个典型系统的硬件组成,如下图所示。 ?...通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。 (10)操作系统内核是应用程序和硬件之间的媒介。

58840
您找到你想要的搜索结果了吗?
是的
没有找到

深入理解计算机系统》阅读笔记--计算机系统漫游

深入理解计算机系统》,这本书,我多次想要好好完整的读一遍,每次都是没有坚持下去,但是作为一个开发者,自己想要成为为数不多的大牛之一,所以打算这次把这本书完整的好好读一遍,并整理为相关的博客!...书的开头说了一句话:计算机系统是由硬件和系统软件组成,他们共同工作来运行应用程序。...我们通常接触更多的是应用程序级别的,很少关注系统以及系统和硬件的交互,但是如果自己能完全理解计算机系统以及它对应用程序的影响,那将会让我们在软件开发的路上走的更远,也同时可以避免很多问题的发生。...最终得到我们编译好的hello文件中或hello.exe 文件中,这就成了我们通常看到的可执行文件 了解这个编译过程对我们写代码来说的好处: 优化程序性能 理解链接时出现的错误 避免安全漏洞 系统硬件的组成...这里有几个关键词的概念需要理解: 进程:进程是操作系统对一个正在运行的程序的一种抽象。

48820

深入理解计算机系统(1.2)------存储设备

上一章我们讲解了hello world 程序在计算机系统中是如何运行的。 ...因此如何将这些复制操作尽快完成则是系统设计者的一个主要目标。 1、从磁盘加载可执行文件到主存 ?  2、将输出字符串从内存写到显示器 ?...实际上,每个计算机系统中的存储设备都被组织成了一个存储器层次结构。如下图所示: ?    ...正如可以运用不同的高速缓存的知识来提高程序性能一样,程序员同样可以利用对整个存储器层次结构的理解来提高程序性能。这个后面我们会详细讲解。  ...5、本章总结    本章主要介绍了高速缓存的产生的原理以及存储器设备的层次结构,如何理解整个存储器的层次结构,对于提高程序性能有很大的帮助。下一章将讲解操作系统的抽象概念。

80990

深入理解计算机系统(2.6)------整数的运算

这就需要我们理解计算机中整数的运算原理。 1、计算机整数运算的局限   我们知道计算机是用二进制序列来表示数的。而二进制序列的长度是和计算机本身的字长有关。...本篇博客中程序运行环境都是在64位系统中进行。 ?...对于上面的程序,我们是在64位系统中进行运算。由上面给出的图片我们可以知道 unsigned short int 在计算机中占用 2 个字节。...这意味着计算机可以使用一个指令执行无符号和补码的乘法运算。下面我们来证明:   其中x’和y’分别代表x和y的补码编码。   那么: ?...而且计算机中也只有加法器,是没有减法器的。我们只需要将减法转换为加法运算即可。   整数的表示和运算结束了,下一篇博客我们将会讲解浮点数,也就是有小数的数。

1.5K70

深入理解计算机系统》(CSAPP)实验六 —— Cache Lab

而且,这个实验比前几个难度都加大了,做实验前建议先去看24张图7000字详解计算机中的高速缓存,理解下Cache的基本原理。 1. 实验目的   本次实验室由两部分组成。...第一部分是要模拟Cahce的行为,理解Cache的原理。第二部分将优化一个小的矩阵转置功能,目的是最大程度地减少高速缓存未命中的次数。 2....  cache的容量有限,当满的时候需要牺牲行(或者说驱逐某行),先遍历当前组,判断它满了没有,如何判断是否满,可以遍历所有的行,只要有一个有效位为0,(有效位的作用是说明该行是否存储了数据,通俗的理解就是是否为空...总结   整个实验难度确实提升不少,刚开始看完书发现对Cache缓存的过程还是不理解,又回去看了下才来做题。网上也看下其他大佬写的代码。

6.1K20

深入理解计算机系统(3.1)---走进汇编的世界

为何要学习汇编语言   对于大部分猿友来说,平时写的都是一些高级程序设计语言,是计算机领域的诸多大神,经过几层的封装才让我们享有了这样的待遇。这样一来,我们在平时的开发过程中,可以省去很多底层的麻烦。...可是LZ想说的是,无论你处于什么样的一个岗位当中,只要你做的事是指挥计算机帮助你完成一些事情,那么你就必须了解计算机如何帮你完成这些事情,否则你就只会指挥,而不会懂得如何去做。...这点其实不难理解,试想一下,你都不知道你的程序实际上是如何运行的,你又怎么可能知道怎么写是更好的呢。...当然了,就算如此,LZ也不敢保证现在对3.X的内容已经了如指掌,因此如果文中有任何与各位猿友的理解不一致的地方,希望各位猿友尽管提出。不仅可以避免误导看博文的猿友,还可以帮助LZ纠正错误的认识。   ...接下来,我们将深入的讨论寄存器、数据格式以及一些汇编指令。

39360

深入理解计算机系统(3.1)---走进汇编的世界

为何要学习汇编语言   对于大部分猿友来说,平时写的都是一些高级程序设计语言,是计算机领域的诸多大神,经过几层的封装才让我们享有了这样的待遇。这样一来,我们在平时的开发过程中,可以省去很多底层的麻烦。...可是LZ想说的是,无论你处于什么样的一个岗位当中,只要你做的事是指挥计算机帮助你完成一些事情,那么你就必须了解计算机如何帮你完成这些事情,否则你就只会指挥,而不会懂得如何去做。...这点其实不难理解,试想一下,你都不知道你的程序实际上是如何运行的,你又怎么可能知道怎么写是更好的呢。...当然了,就算如此,LZ也不敢保证现在对3.X的内容已经了如指掌,因此如果文中有任何与各位猿友的理解不一致的地方,希望各位猿友尽管提出。不仅可以避免误导看博文的猿友,还可以帮助LZ纠正错误的认识。   ...接下来,我们将深入的讨论寄存器、数据格式以及一些汇编指令。

33730

深入理解计算机系统(3.1)---走进汇编的世界

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer13.html 为何要学习汇编语言   对于大部分猿友来说,平时写的都是一些高级程序设计语言,是计算机领域的诸多大神...可是LZ想说的是,无论你处于什么样的一个岗位当中,只要你做的事是指挥计算机帮助你完成一些事情,那么你就必须了解计算机如何帮你完成这些事情,否则你就只会指挥,而不会懂得如何去做。...这点其实不难理解,试想一下,你都不知道你的程序实际上是如何运行的,你又怎么可能知道怎么写是更好的呢。...当然了,就算如此,LZ也不敢保证现在对3.X的内容已经了如指掌,因此如果文中有任何与各位猿友的理解不一致的地方,希望各位猿友尽管提出。不仅可以避免误导看博文的猿友,还可以帮助LZ纠正错误的认识。   ...接下来,我们将深入的讨论寄存器、数据格式以及一些汇编指令。

38330

深入理解计算机系统(5.1)------优化程序性能

第二点对于编程者则需要理解编译器的优化能力以及局限性,编写程序看上去只是一点小小的改动,可能都会引起编译器优化方式很大的变化;第三点技术主要这对运算量特别大的运算,我们将一个大的任务分成多个小任务,这些任务又可以在多核和多处理器的某种组合上并行的计算...例如,当表明一个系统有“4GHz”处理器,这表示处理器时钟运行频率为 4*109 千兆赫兹。每个时钟周期的时间是时钟频率的倒数。...与机器相关: ①、理解现代处理器 在代码级上,看上去似乎是一次执行条指令,每条指令都从寄存器或存储器中取值,执行一个操作后,并把结果存到一个寄存器或存储器位置。

1.1K100

深入理解计算机系统 第二章 笔记

第二章 信息的表示和处理 无符号编码 基于传统的二进制表示法,表示大于或者等于零的数字 补码编码 表示有符号整数最常见的方式 浮点数编码 表示实数的科学计数法的以2为基数的版本 信息存储 大多数计算机使用...十进制与十六进制 同上例,800H = 8 16 ^ 2 + 0 16 ^ 1 + 0 * 16 ^ 0 字数据大小 字长 指明指针数据的标称大小,虚拟地址是以这样的一个字来编码的 字长决定的最重要的系统参数就是虚拟地址空间的最大大小...负数的补码,是能够和其相反数相加通过溢出从而使计算机内计算结果变为0的二进制码。这是补码设计的初衷,具体目标就是让1+(-1)=0,这利用原码是无法得到的。...0100110010000001110010000000000 对于2.49的注释 n + 1 位二进制的小数是 n 位,因此2 (n + 1) + 1 位不能表示 舍入 因为表示方法限制了浮点数的范围和精度,所以浮点运算只能近似的表示实数运算 因此采用一种系统的方法

3.2K30

深入理解计算机系统》(CSAPP)实验四 —— Attack Lab

通过完成本实验达到: 深入理解当程序没有对缓冲区溢出做足够防范时,攻击者可能会如何利用这些安全漏洞。 深入理解x86-64机器代码的栈和参数传递机制。...深入理解x86-64指令的编码方式。 熟练使用gdb和objdump等调试工具。 更好地理解写出安全的程序的重要性,了解到一些编译器和操作系统提供的帮助改善程序安全性的特性。...,理解缓冲区溢出时函数的返回值是如何被修改和精准定位的。 准备工作   在官网下载得到实验所需文件解压后会得到五个不同的文件。对六个文件简要说明如下所示。   ...通过本次实验也加强了自己对函数调用栈,字节序,GDB,汇编的理解。X86有些指令用多了也就记住了,不需要刻意去记,熟能生巧!

1.1K30

深入理解计算机系统》(CSAPP)实验三 —— Buf Lab

这是CSAPP的第三个实验,主要让我们熟悉GDB的使用,理解程序栈帧的结构和缓冲区溢出的原理。 实验目的   本实验的目的在于加深对IA-32函数调用规则和栈结构的具体理解。...首先简单理解下函数调用过程中的栈帧结构。如上图所示,为函数P调用函数Q时,程序的栈帧结构。 当前正在执行的过程的帧总是在栈顶。...(结合栈帧的图理解)   由反汇编可得smoke函数的入口地址为0x08048c18。因此,我们需要做的就是把上面的44个字节随意填满(不要填换行),然后把原来的返回地址改为smoke函数的入口地址。...做完这些实验确实对于程序的栈帧结构有了更深的理解。更好地理解了C语言函数的汇编语言,和缓冲区溢出的原理。掌握缓冲区溢出攻击的设计方法,进一步熟悉了gdb的调试。

1.8K20
领券