您的位置:首页 > 其它

OS和编译原理回顾-重要是多语言开发能力

2017-03-12 22:51 288 查看
OS: 最主要就是进程线程调度管理及同步技术(临界区信号量等);内存存储结构(寄存器->高速缓存1->高速缓存2->主存储器)页面调度算法;磁盘管理寻道算法;IO管理中断读取DMA不必CPU参与显示IO(用户态,内核态缓存,使用文件内存映射效率更高);网络串口通信(TCP,UDP网卡发送和接收缓存);显卡驱动命令缓存队列发送(CPU和GPU通信),声卡,摄像头,蓝牙外接设备。

编译原理: 

主要是词法分析,语法分析,语法制导翻译。

中间代码生成。

运行时刻环境:

1)编译生成的静态数据区包括全局静态变量和常量;

2)代码区(二进制的代码,载入进程代码区执行时候根据CPU架构分为强代码顺序和弱代码顺序,弱代码顺序(ibm,arm)多线程多cpu并行时候需要对同步的原子锁(总线锁或内存锁)进行memory_order设置);

3)运行时候的动态内存分配栈和 堆内存分配释放,栈主要是函数参数返回值和局部常量,堆主要是大块的对象和数据块,垃圾回收技术)。

4)代码生成,代码优化(机器无关优化,并行性和局部性优化,LLVM有编译时,运行时,空闲时优化代码的设计理论)等。

无论是编译型语言还是解释型语言,都遵守上面的编译器过程,都是基于代码区,全局常量区,静态常量区,栈,堆的地址上(指针指向的)内存块上进行CPU逻辑处理。

CPU最终执行的是基于内存寄存器的加减乘除运算,以及各种条件判断,函数和内存跳转(jump)指令。

所以语言都是共通的,而且很多高级语言都是基于C语言虚拟机完成的,所以不要有语言偏见,多学习几门语言才能真正提升能力。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: