当shell加载和运行完hello程序,shell和hello程序都没有直接访问键盘,显示器,磁盘或者主存,它们依靠的是操作系统提供的服务。可以把操作系统看成程序和硬件之间插入的一层软件。
文件是对I/O设备的抽象表示。
虚拟存储器是对主存和磁盘I/O设备的抽象表示。
进程是对处理器,主存,I/O设备的抽象表示。
进程
操作系统实现交错执行的机制成为上下文切换。
操作系统保持跟踪进程运行所需要的所有状态信息,这种状态,叫做上下文。
图1-12为示例场景,图中两个并发进程:shell进程和hello进程。
- 起初,只有shell进程在运行,即等待命令行上的输入。
- 当我们让他运行hello程序时,外壳通过调用一个专门的函数(系统调用),来执行我们的请求。(操作系统保存shell进程的上下文,创建一个hello进程及其上下文,然后将控制权交给新的hello进程)
3.hello进程终止后,操作系统恢复shell进程的上下文,将控制权传回给它,shell继续等待下一个命令行输入。
线程
一个进程可以由多个线程组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
多线程之间比多进程之间更容易共享数据。
虚拟存储器
它是一个抽象概念,为每个进程提供了一个假象,即每个进程都在独占地使用主存。
每个进程看到的是一致的存储器,称为虚拟地址空间
地址空间最上面的区域是为操作系统中代码和数据保留的,这是对所有进程来说都一样的。
地址空间的底部区域存放用户进程定义的代码和数据。
图中地址从下往上增大。
文件
文件就是字节序列。每个I/O设备,包括磁盘,键盘,显示器,网络都可以称为文件。