进而面试官就带着质疑的态度说"这些文章是不是

2019-12-01 13:25 来源:未知

永利平台娱乐 1

这篇文章大概写于两三个月前,但一直忘记发布文章。今天用了半小时把这篇文章大概浏览了下,依然感觉能学到很多东西,因为时隔两三个月有些内容忘的差不多了。但是因为之前写过这篇文章,所以再次回忆这些知识点还是很快的。

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。

记得三个月前找工作面试时,很多面试官都会对着我的文章来提问。其中有一面试官,最开始问到我文章内容中涉及的几个知识,但是当时没想起来。进而面试官就带着质疑的态度说"这些文章是不是你写的"。笔者当时很生气,但未表现出丝毫。然后回答到:"是自己写的,只是时间久了有些内容记不清了"。面试官接着按笔者写的文章问了不少,基本回答出百分之八九十那样。说这件事,主要是想说"好记性不如烂笔头",但是却没多少人真正将这句话记到心中。倘若每个人都有着超凡的记忆力,那么是不是都要考清华北大。现在这样说,以后在面试过程中,若被面试官质疑文章是不是自己原创,笔者可能先会说上这些,然后让他继续再问些问题便可知晓。

一个运行中的程序,譬如网页浏览器在个人电脑或是图灵机(Turing machine)里面,为一个进程将数据转换于真实世界及电脑内存之间,然后将数据存于电脑内存内部(在计算机科学,一个程序是一群指令的集合,一个进程是电脑在运行中的程序)。内存能被实际组织在许多方法里头,例如磁带或是磁盘,或是小数组容量的微芯片。 从1950年代开始,计算机变的更复杂,它被连接于许多种类的内存。内存管理的任务也变得复杂,甚至必须要在同一台机器上相同的时间运行多个进程。

有些知识点随着时间久远,很可能会记不清,但是当我翻看自己的博客文章,会以最快的速度想起那些知识点,毕竟文章的每一个字都是出自我自己的手,整个写作都是出自自己以往的思路。

在内存内,一个程序(操作系统)在每一个数据区块持续地追踪实体位置,及移动实体上的数据去改善其性能及保证可靠性,对于每个用户层(user-level)的程序,操作系统分配一段虚拟内存空间,当进程起始时,不需要移动数据到实体设备间,数据存于磁盘内的虚拟内存空间,也不需要去配置主存空间给该进程,当用户有需要用到时,他们才会很自由地加载到主存内。

对于很多半路出家转行到 IT 行业的技术小白而言,说自己是程序员,但是请问问自己是否可以讲清楚什么是编程。敲了那么多代码,又能否解释清楚程序到底是怎样跑起来的(包括软件到硬件整个执行流程)。

可以想像一个很大的程序,当他运行时变成进程,而大部分的内存空间都被存到磁盘内虚拟内存地址,需要用到的部分才被加载到内存内部提供服务。

是不是有点困难!没关系,笔者向你推荐一本很基础的书 《程序是怎样跑起来的》。笔者用了大概两天多的时间简单过了下这本书,现在对程序的整个运行流程有了简单的认识,包括CPU、虚拟内存、物理内存、操作系统、硬件和驱动等相关。整本书的内容通俗简单易懂,虽说深度不是很深,但很适合对计算机硬件一窍不懂的小白。如果有需要笔者这有电子版的书。

主存使用

一个程序结构由以下两部分而成:

  • “本文区块”,也就是指令存放,提供CPU使用及运行
  • “数据区块”,存储程序内部本身设置的数据,例如常数字符串,像是GUI接口内部一些文字消息,或是程序设计时所放入的消息数据,数据可借由程序运行时由输入(input)的方式加入,或者经由程序运行的流程中被移除。

当一个程序运行,操作系统将程序的数据区块及本文区块映射到虚拟内存空间内部,然后在内存运行程序的指令,无论如何,当程序运行时就必须去存储暂时性的数据,或更重要的,它会调用一些函数(function)或是例程(subroutine),并且存储当前函数的状态,最好的数据结构方法,数据由堆栈(stack)的方式存储,当我们完成这个函数,数据会由堆栈的pop方式取出,堆栈将会在函数的生命周期内动态的成长,操作系统提供区分本文区块及数据区块,而堆栈区块则在一个进程的最顶端,这种方式称为段式结构(segments)或“分段”。

 

我们的公共号

永利平台娱乐 2

还是保持以前的习惯,学习后就要记录点内容。

  • a. 程序员编写高级语言。int a; a = 1+2; printf;
  • b、将程序编译后转换成机器语言的 EXE 文件。010000101001010101010010101010100101010101010010101
  • c、程序运行时,在内存中生成 EXE 文件的副本。
  • d、CPU 解释并执行程序。

永利平台娱乐,CPU 和内存都是有许多晶体组成的电子部件,通常称之为 IC。从功能方面来说,CPU 主要由四部分构成,其中控制器和运算器最为核心。

  • 寄存器:用来暂存指令,数据等处理对象,可以将它看成内存的一种,CPU 内部会有 20-100 个寄存器。
  • 控制器:负责把内存上的指令,数据读入寄存器,并根据指令的执行结果来控制整个计算机。
  • 运算器:负责运算从内存读入寄存器的数据。
  • 时钟:负责发出 CPU 开始计时的时钟信号。

程序启动后,根据时钟信号,控制器从内存中读取指令和数据,通过这些指令加以解释和运行,运算器会对数据进行运算,控制器根据该运算结果来控制计算机(所谓的控制就是指数据运算以外的处理,如:数据输入和输出事件的控制、键盘、显示器等的输入输出。

TAG标签:
版权声明:本文由永利平台娱乐发布于IT交流,转载请注明出处:进而面试官就带着质疑的态度说"这些文章是不是