我正在参加「掘金·启航计划」
学好基本功,打遍天下无敌手。不管用什么语言,懂得操作系统原理,可以让我们对自己所用的语言有更好的认识和深刻理解!!!
首先我们先来学习下操作系统的介绍,什么是操作系统?
操作系统是一种复杂的系统软件,是由不同的程序代码、数据结构、数据初始化文件的集合,可执行
操作系统屏蔽了对硬件操作的细节,提供了计算机用户与计算机硬件之间的接口,并且通过这个接口使应用程序的开发变的简单、高效
操作系统主要完成什么目标呢?
- 首先是与硬件部分相互作用,比如我们工作中,使用高级语言要操作内存、打印服务等,我们是不能直接操作硬件的,需要通过操作系统提供的函数来帮我们操作
- 为运行在计算机上的应用程序提供执行环境。比如我们写了一个java代码,它就必须在有操作系统的计算机上才能运行
操作系统主要做什么?
- 处理机管理:决定把处理机CPU先给哪个程序用,后给哪个程序用。理解起来很简单,就是我们在用电脑的时候,可以打开很多软件或者应用,那有的电脑是单核的有的是双核的,而我们打开的基本上都是很多个应用,什么时候运行哪个程序,是由操作系统来判断然后分配给CPU处理
- 内存管理:就是给我们的应用程序分配内存、释放内存等操作
- 设备管理:完成怎么分配设备,分配哪台设备,怎么和设备连接等
- 文件管理:为每个文件分配空间 、建立目录,对目录进行组织管理以及根据用户请求从外存读取数据或将数据写入外存
操作系统的特征
现代操作系统都支持多任务,具有并发、共享、虚拟和异步性特征
并发:两个或多个事件在同一时间间隔内发生
并行:是指多事件同时发生
共享:系统中的资源可供内存中多个并发执行的进程共同使用
- 互斥共享:任意时刻一种资源只能被一个进程访问
- 同时共享:从宏观上看,资源可以被多个进程同时访问
- 并发与共享的关系是相互依赖的
虚拟:最常用内存虚拟化,用户感觉到的内存大于实际内存
异步:进程以不可预知的速度向前推进
比如说我使用的语言java,他的一些操作,都是需要操作系统的支持。多线程、并发、异步等。学会了操作系统的原理,在开发的时候会更加得心应手