前言

打开浏览器,做个简单计算,我们能看到控制台打印出计算结果,这个过程究竟发生了什么?

一个简单计算

首先,我们使用键盘输入计算式子,指令会被放入内存中,相应的控制器会取出内存中的指令,运算器拿到结果之后仍然会返回给内存,输出设备继续读取内存讲结果展示出来。

那么操作系统是干什么的呢?如果没有操作系统,JS要处理硬件的协调工作,进程之间的切换等等,说到了进程,Node.js问这个的可能性可是很大的。

操作系统

操作系统有四个特征,并发,共享,异步,虚拟。

首先并发,并发并不是指多个任务同时执行,只是通过任务调度使得看起来是可以同时执行。操作系统的并发性指的是操作系统中可以同时存在多个运行的程序,举例来说就是单核CPU运行着多个应用程序。

共享,当你用quicklook和vscode同时访问一个文件时,你会发现并没有想象中的报错,这就是一种共享的方式;同时当你访问某个文件,却又删除这个文件时,你会发现他会有报错,这也是一种共享的体现,只不过叫做互斥共享。

虚拟我们经常接触,从xp开始就知道配置虚拟内存了,包括虚拟存储和虚拟处理器,虚拟的特性是以并发作为基础的。

异步就不用解释了。

刚刚提到了指令,一般来说,指令是CPU能识别和执行的最基本命令,依据权限大小可以分为特权指令和非特权指令,同时CPU也有两种状态,用户态和内核态,前者只能执行非特权指令。

看一张图:
撸一撸简单的操作系统知识

时钟管理,如进程切换,获取时间信息,都依赖时钟管理,如一个程序的时间分片结束之后,要切换下一个程序,而如果某个程序要进行系统资源调用,运行在用户态的程序已经无法满足需求,我们需要切换到内核态,经过一定的调度后,该系统资源准备就绪,通过I/O控制器会给操作系统发出一个中断信号,从用户态切换到内核态,这个过程就是中断处理的过程,也是唯一实现的方法。除此之外,中断还有很多其他的分类。

进程

现代操作系统的特性决定了每个应用程序都需要分配一定的资源,如CPU,内存等,系统自然要生成一种数据结构称为PCB(进程控制块),来描述进程信息。

进程有三种基本状态,运行态,就绪态和阻塞态,还有两种额外状态,创建和终止。
撸一撸简单的操作系统知识
撸一撸简单的操作系统知识
需要注意的是,因为进程资源都是独立分配的,所以他们所拥有的内存地址空间都是互相独立的,因此进程通信就是很必要的。

一般来说,通信方式有共享内存,这个很好理解。

有管道,即一个用与链接独写进程的一个共享文件,在内存中开辟一块缓存区,需要注意的是pipe是半双工通信,即只能单向,实现全双工需要两个 pipe。

还有消息传递等,如通过中间件实现发布订阅模式等。

其他

内存是硬件设备与CPU沟通的中转站,程序执行前需要先放到内存中才能被CPU处理。

内存分配分为连续分配和非连续分配,连续分配是指用户进程分配的必须是一个连续的内存空间。

文件其实是一组数据的集合,整个文件系统可以看作一个树结构。

其他还有IO控制设备等。

参考文章

看这里

相关文章:

  • 2021-09-23
  • 2021-07-16
  • 2021-11-21
  • 2022-03-04
  • 2022-12-23
  • 2021-11-08
  • 2022-12-23
猜你喜欢
  • 2021-07-18
  • 2022-01-01
  • 2018-06-27
  • 2021-06-08
  • 2021-07-01
  • 2018-02-21
  • 2021-08-04
相关资源
相似解决方案