程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... ·...

19
程序设计基础 暨南大学 林龙新

Upload: others

Post on 16-Mar-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

程序设计基础

暨南大学 林龙新

Page 2: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

教师简介• 教育背景

– 1997年,华中理工大学,计算机应用,学士– 2002年,华中科技大学,通信工程,硕士– 2008年,华南理工大学,计算机应用技术,博士– 2014 - 2015年,弗吉尼亚联邦大学,访问学者

• 工作经历– 1997-2005,广州金鹏集团,产品经理、研发部长、集团战略发展部部长等,工程师– 2009 – 至今,暨南大学,信息科学技术学院,副教授,硕士生导师– 曾承担过多家IT企业的高级顾问和联合创始人等

• 研究兴趣和联系方式– AI、知识图谱、计算机网络、SDN/NFV、网络安全、分布式和高性能计算等– [email protected]

Page 3: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

参考和个人教学网站• 主要参考书籍

– 《计算机科学导论》(第 3 版) Behrouz Forouzan 著, 刘艺、刘哲雨等译,机械工业出版社。

– 《计算机科学概论(原书第5 版)》,内尔·黛尔(NellDale),约翰·路易斯(JohnLewis) 著,吕云翔,刘艺博 译,机械工业出版社。

– 《计算机科学概论(第 12 版)》,J.格伦·布鲁克希尔(J.Glenn Brookshear),丹尼斯·布里罗(Dennis Brylow) 著,刘艺,吴英,毛倩倩 译,人民邮电出版社。

• 个人教学网站– https://icerg.longxinlin.com/

Page 4: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

PART I 计算机核心概念

Page 5: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

目 录• Chapter 0. 知识图谱• Chapter 1. 计算机的起源• Chapter 2. 事物的数据化• Chapter 3. 数据的处理• Chapter 4. 现代计算机组成• Chapter 5. 操作系统• Chapter 6. 算法• Chapter 7. 程序设计语言

• Chapter 8. 软件工程• Chapter 9. 数据结构• Chapter 10. 数据库• Chapter 11. 计算机网络和网络

编程

Page 6: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

Chapter 5 操作系统

Page 7: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

1.操作系统定义和自举过程• 定义

– 操作系统(Operation System, OS)是计算机硬件和用户(程序和人)之间的一个接口,它使得其他程序更加方便有效地运行,并能方便地对计算机硬件和软件资源进行访问。

– 目的:有效地使用硬件,容易使用资源

Page 8: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

1.操作系统定义和自举过程• 自举过程

– 计算机加电后,从ROM中读取启动指令,还是执行启动程序(BIOS)。– 把操作系统内核Load到内存– 执行OS的第1条指令,开始运行操作系统– 操作系统执行后,为用户提供服务。(可以想象为一个不停响应用户请求的超级服务者)

Page 9: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

2. 设计思考• 假设现状

– 一台计算机由1个CPU,1个主内存,硬盘,键盘,鼠标,显示器。– 要运行多个程序,使得用户感觉在“一段时间内”“同时”做几件事情,例如:“用word

编辑文字”,“微信聊天”。– 注意:CPU每一个时刻只能执行一条指令。– 操作系统到底如何办到?

• 分析– “用word编辑文字”肯定是个程序,由数万条指令构成– “微信聊天”也是个程序,由数万条指令构成– 他们如何体现“同时”?

Page 10: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 四大核心功能

– 进程管理 : CPU的高效利用– 存储管理: 主内存的高效利用– 设备管理:各类输入/输出设备的合理使用– 文件管理:信息的持久化– 此外:包含面向用户的用户界面部分

Page 11: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 存储管理

– 单道程序• 只有一道程序在执行• 程序必须被载入内存• 当一道程序运行时,其他程序不能被运行

Page 12: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 存储管理

– 多道程序• 可以在一段时间内同时运行多道程序• 程序采用“伪并行”(并发)的方式执行

Page 13: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 存储管理

– 虚拟内存• 物理内存不够,使用外

部存储器来虚拟实际的物理内存

• 速度会慢好几个数量级

Page 14: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 进程管理

– 对计算资源的有效利用– 程序、作业和进程

• 程序(Program):程序员编制的源代码文件、可执行文件、可运行脚本等• 作业(Job):一个程序被选中执行,到其运行结束并再次成为一个程序的完整过程。• 进程(Process):一个正在运行的程序• 线程(Thread):进程的可执行部分。 进程 = 数据 + 线程

Page 15: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 进程管理

– 程序、作业和进程的状态图

Page 16: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

3. 组成部分• 进程管理

– 调度器• 作业调度器• 进程调度器

– 分时间片调度举例• 其他调度器

Page 17: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

4. 栈(Stack)和堆(Heap)• 栈

– 每个线程用于执行函数时用于临时保存参数、局部变量所需的内存空间– 每个线程有自己独立的栈空间

• 堆– 所有线程共享内存空间。C/C++ 等malloc,new操作, Java中的new运算就是对不同的

数据对象从堆中分配内存。

Page 18: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

5. 程序、进程、线程和协程• 程序

– 完成一件事情的计算机指令的集合,例如: QQ软件,包含QQ.exe 文件等存储在硬盘上的文件集合。

• 进程– 程序被操作系统调入内存后执行的实体。包含:文件在内存中的镜像、相应的数据资源、多

个执行任务线程。可以这样理解:进程相当于一场春节晚会,包含:舞台、乐器、节目等。一个个的节目就等同于线程,舞台、乐器等是这些线程公共的数据资源。所以:

– 进程 = 共享数据资源 + 线程集合

• 线程– 操作系统进行轮询调度的基本单位,是进程的组成部分。

• 协程(Coroutine)– 协程是一种用户态的轻量级线程,协程的调度完全由用户控制。比线程更小级别。– Go语言在语言级支持协程,javascript框架 react, node.js 等大量采用协程思想

Page 19: 程序设计基础 - icerg.longxinlin.com®¡算机核心概念-5... · 年,华中科技大学,通信工程,硕士 – 2008 年,华南理工大学,计算机应用技术,博士

6. 总结• 对于一个程序员

– 在操作系统方面,最重要的是要掌握好进程、线程和内存管理方面的概念。– 因为计算资源和内存资源是最重要的计算机资源

• 进程、线程、协程等概念的重要性– 如果堆进程、线程等不能透彻理解,是无法编制高效的多进程、多线程等并发和并行程序的

。所谓程序员进阶也是空谈。