
Internals
文章平均质量分 79
chosen0ne
互联网码农,对Linux,分布式计算和存储,编译器,nginx,脚本语言感兴趣
展开
-
关于编程语言的思考——编译型和解释型
我们知道,任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的,无论是编译型语言还是解释型语言。而任何高级编程语言程序的源代码都是一个字符序列,这个字符序列到底层的01序列是通过编译器或解析器经过多次转换完成的。图1 编程语言的层次结构 这个层次结构中,从高到低越来越接近于机器硬件。机器代码就是01序列,汇编语言就是描述本地机器的指令集体系结构,而原创 2011-12-21 15:24:45 · 9328 阅读 · 5 评论 -
系统调用的实现原理
系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。 系统调用是属于操作系统内核的一部分的,必须以某种方式提供给进原创 2012-07-06 15:00:39 · 28206 阅读 · 6 评论 -
进程调度模拟
进程调度就是在所有可运行的进程之间分配CPU资源,它使得在单个CPU上并发执行多个进程成为可能。本文通过java模拟时间片轮转算法,以具象化进程调度。进程是操作系统中一个重要的抽象,通过进程调度和虚拟内存机制实现了CPU和内存的虚拟化。在每个进程看来,自己是独占CPU和内存的。 下面看一下进程调度的大致原理,每个进程是程序的执行实体,相当于程序执行的容器。在进程执行时,进程有自己原创 2012-08-28 16:29:06 · 3712 阅读 · 0 评论 -
一个简单的解释器——python实现
一直以来都对编译器和解析器有着很大的兴趣,也很清楚一个编译器的概念和整体的框架,但是对于细节部分却不是很了解。我们编写的程序源代码实际上就是一串字符序列,编译器或者解释器可以直接理解并执行这个字符序列,这看起来实在是太奇妙了。本文会用python实现一个简单的解析器,用于解释一种小的列表操作语言(类似于python的list)。其实编译器、解释器并不神秘,只要对基本的理论理解之后,实现起来也比较简原创 2012-09-27 17:13:17 · 10127 阅读 · 0 评论 -
程序的前世今生——编译、链接和加载简介
本篇文章是组内分享的小结,主要介绍源代码 -> 可执行程序 -> 执行这一过程。也就是源代码是如何转化为可执行程序,然后可执行程序又是如何执行的。在用java或python时,只需要java ClsName或者python a.py就可以执行相应的程序,实际上它们都是依托于底层的虚拟机。本文主要介绍的是操作系统级别的连接、加载、执行等,而不是虚拟机语言的执行。这里只对链接、加载进行一个简介,详细内原创 2012-10-28 23:46:24 · 6453 阅读 · 0 评论