zoukankan      html  css  js  c++  java
  • 第一章 《计算机系统漫游》

    1.一个程序从写出到运行经历了什么?

      在IDE上编程的时候,程序写出到运行的过程被隐藏了,于是今天我跟着一个程序经历了它生命的历程。

    一个简单的程序 hello.c

    //hello.c
    #include<stdio.h> int main() { printf("hello my fang ");
    return 0;
    }

    首先我们在编辑器里创建并保存了一个文件,这个文件是源文件,hello.c。源文件里的每一个字符在系统中是用ASCⅡ码来表示,而每一个字符都是用字节来存储的(事实上计算机里所有的文件,数据等全都是用位来表示和存储的,八位代表一个字节)。hello.c源文件在预处理器的作用下处理成hello.i的文件(程序中预处理语句会告诉预处理器),hello.i在编译器的作用下翻译为hello.s的汇编程序,然后在汇编器的作用下,把程序翻译为机器语言指令打包在二进制文件hello.o中。程序中的printf函数存在一个已经单独预编译好了的文件printf.o,在链接器的作用下与hello.o文件合并在一起得到hello文件,而这个hello文件就是以二进制保存的可执行的目标程序,系统把它加载到内存中,然后执行。

    一个典型的系统硬件的组成包括CPU(中央处理器,总线,I/O,主存(一个临时的存储器,在处理器处理程序时,存放程序信息和数据的地方)。

    hello文件生成后被存在磁盘(I/O设备)中,然后在命令下,hello文件被送入主存,处理器这时候开始处理程序(从程序的入口main()开始),此时文件会被送入处理器里的寄存器中处理,处理完毕后把结果送到显示器上,于是在显示器上便出现了hello my fang。至此这个程序寿终正寝。

    2.关于操作系统的一些基本概念

    所有程序对硬件的操作都必须经过操作系统,操作系统有两个基本的功能:1.防止硬件被失控的程序滥用 2.向应用程序提供简单一致的机制来控制复杂而又不同的硬件设备。操作系统通过以下几个抽象来实现这两个功能。

    1.进程

    进程是操作系统对一个正在运行的程序的抽象,操作系统可以同时运行多个进程,但每个进程表现为独自使用硬件。一个进程与另一个进程交错执行叫做并发运行,也就是说在一个时段内多个进程在运行,但在某个时刻,只有一个进程在运行,但宏观上这几个进程都有进度,是因为系统同过上下文(一个进程运行的所有状态叫上下文)切换来并发的执行多个进程。

    2.线程

    每个进程是由一个或多个进程组成。可以简单的理解为进程是一个大项目,而线程是项目组的工作人员。多线程比多进程更容易共享数据(更高效)。

    3.虚拟存储器

    因为每一个进程在宏观上表现为单独运行,所以想象每一个进程在运行时单独占了一个主存。虚拟存储器是对程序存储器的抽象

    4.文件

    文件就是字节的序列。所以每个I/O设备甚至网络都可以看作文件。文件是对I/O设备的抽象

    此外两个术语。并发:一个同时具有多个进程的系统  并行:使用并发使一个系统运行更快

  • 相关阅读:
    Python 2.7 中使用 Print 方法
    python
    Python 中 global、nonlocal的使用
    PYTHON中 赋值运算的若干问题总结
    Python List 中 Append 和 Extent 方法不返回值。
    由Python的一个小例子想到的
    PHP环境安全加固
    Tomcat服务安全加固
    网站被植入Webshell的解决方案
    Apache服务安全加固
  • 原文地址:https://www.cnblogs.com/xiaolei-meow/p/6435660.html
Copyright © 2011-2022 走看看