操作系统是迄今为止开发的最复杂的软件之一。这反映了试图满足便利性、效率和进化能力这一棘手且在某些情况下相互竞争的目标所面临的挑战。[DEN80a]提出,在操作系统的发展中有四个主要的理论进步:
1、进程
2、内存管理
3、信息保护和安全计划
4、资源管理
每一个进步都以原则或抽象为特征,这些原则或抽象是为解决棘手的实际问题而开发的。综合来看,这四个领域涵盖了现代操作系统的许多关键设计和实现问题。
操作系统设计的核心是进程的概念。这个术语在20世纪60年代首次被Multics的设计者使用[DALE68]。这比工作更笼统一些。术语进程给出了许多定义,包括:正在执行的程序。在计算机上运行的程序的实例。可以分配给处理器并在处理器上执行的实体。一个活动单元,其特征是单个连续执行线程、当前状态和一组相关的系统资源。
计算机系统开发的三大主线在时序和同步方面产生了问题,这有助于进程概念的发展:多道程序批处理、分时和实时事务系统。正如我们所看到的,多道程序设计是为了使处理器和I/O设备(包括存储设备)同时忙碌,以实现最大效率。关键机制是:为了响应指示I/O事务完成的信号,处理器在主存中的各种程序之间切换。
第二条开发路线是分时系统。在这里,关键的设计目标是响应个人用户的需求,但出于成本原因,能够同时支持多个用户。这些目标是兼容的,因为用户的反应时间相对较慢。
第三个重要的发展方向是实时事务处理系统。在这种情况下,许多用户正在针对数据库输入查询或更新。一个例子是一个客机保护系统。事务处理系统和分时系统之间的关键区别在于,前者仅限于一个或几个应用程序,而分时系统的用户可以参与程序开发、作业执行和各种应用程序的使用。在这两种情况下,系统响应时间都是最重要的。
系统程序员在开发早期多道程序设计和多用户交互系统时可用的主要工具是中断。任何作业的活动都可能因定义的事件(如I/O完成)的出现而暂停。处理器将保存某种上下文(例如,程序计数器和其他寄存器),并分支到中断处理例程,该例程将确定中断的性质,处理中断,然后恢复用户对中断作业或其他作业的处理。
协调这些变化的系统软件的设计变得非常困难。由于任何时候都有许多工作在进行,每一项工作都涉及按顺序执行的许多步骤,因此不可能分析所有可能的事件序列组合。
在活动之间缺乏一些系统的协调和合作手段的情况下,程序员根据他们对操作系统必须控制的环境的理解,采用了临时方法。这些努力容易受到微妙的编程错误的影响,只有当某些相对罕见的行动序列发生时,才能观察到这些错误的影响。这些错误很难诊断,因为它们需要与应用程序软件错误和硬件错误区分开来。即使检测到错误,也很难确定原因,因为出现错误的确切条件很难重现。一般来说,此类错误有四个主要原因:
不正确的同步:通常情况下,例程必须暂停,等待系统中其他地方的事件。例如,启动I/O读取的程序必须等到缓冲区中的数据可用后才能继续。在这种情况下,需要一些其他例程的信号。信号机构设计不当可能导致信号丢失或接收到重复信号。
失败的互斥:通常情况下,多个用户或程序会试图同时使用共享资源。例如,两个用户可能试图同时编辑同一个文件。如果不控制这些访问,可能会发生错误。必须有某种互斥机制,每次只允许一个例程对文件执行更新。在所有可能的事件序列下,这种互斥的实现很难被验证为正确的。
不确定的程序操作:特定程序的结果通常只取决于该程序的输入,而不取决于共享系统中其他程序的活动。但是,当程序共享内存,并且它们的执行由处理器交错执行时,它们可能会以不可预测的方式覆盖公共内存区域,从而相互干扰。因此,执行各种程序的顺序可能会影响任何特定程序的结果。
死锁:两个或两个以上的程序可能会挂起,等待彼此的执行。例如,两个程序可能每个都需要两个I/O设备来执行某些操作(例如,磁盘到磁带复制)。其中一个程序已经控制了其中一个设备,另一个程序控制了另一个设备。每个程序都在等待另一个软件释放所需的资源。这样的死锁可能取决于资源分配和释放的时机。
解决这些问题所需要的是一种系统的方法来监测和控制处理器上执行的各种程序。进程的概念提供了基础。我们可以认为一个进程由三个部分组成:
1、一个可执行程序
2、程序所需的相关数据(变量、工作空间、缓冲区等)
3、程序的执行上下文
程序执行上下文至关重要。执行上下文或进程状态是操作系统能够监督和控制进程的内部数据。此内部信息与进程分离,因为操作系统具有不允许进程使用的信息。上下文包括操作系统管理进程所需的所有信息,并且处理器需要正确执行进程。上下文包括各种处理器寄存器的内容,例如程序计数器和数据寄存器。它还包括操作系统使用的信息,例如进程的优先级以及进程是否正在等待特定I/O事件的完成。
图2.8显示了可以管理进程的方式。两个进程,A和B,存在于主内存中。也就是说,为每个包含程序、数据和上下文信息的进程分配了一块内存。每个进程都记录在由操作系统构建和维护的进程列表中。进程列表包含每个进程的一个条目,其中包括一个指向包含该进程的内存块位置的指针。该条目还可能包括进程的部分或全部执行上下文。执行上下文的剩余部分存储在其他地方,也许与进程本身(如图2.8所示)一起,或者经常存储在单独的内存区域。进程索引寄存器将索引包含在当前控制处理器的进程的进程列表中。程序计数器指向该进程中要执行的下一个指令。基本寄存器和限制寄存器定义了进程占用的内存区域:基本寄存器是内存区域的起始地址,限制是区域的大小(以字节或单词为单位)。程序计数器和所有数据引用都是相对于基本寄存器进行解释的,不得超过极限寄存器的值。这可以防止进程间干扰。
在图2.8中,进程索引寄存器表示进程B正在执行。进程A之前正在执行,但已被暂时中断。A中断时所有寄存器的内容都记录在其执行上下文中。稍后,OS可以执行进程切换并恢复进程A的执行。进程切换包括保存B的上下文和恢复A的上下文。当程序计数器加载指向A程序区域的值时,进程A将自动恢复执行。
最后一点,我们在这里简要介绍,是线程的概念。本质上,一个被分配了特定资源的进程可以被分解为多个并发线程,这些线程协同执行以执行进程的工作。这引入了一个由硬件和软件管理的新级别的并行活动。
1、进程
2、内存管理
3、信息保护和安全计划
4、资源管理
每一个进步都以原则或抽象为特征,这些原则或抽象是为解决棘手的实际问题而开发的。综合来看,这四个领域涵盖了现代操作系统的许多关键设计和实现问题。
操作系统设计的核心是进程的概念。这个术语在20世纪60年代首次被Multics的设计者使用[DALE68]。这比工作更笼统一些。术语进程给出了许多定义,包括:正在执行的程序。在计算机上运行的程序的实例。可以分配给处理器并在处理器上执行的实体。一个活动单元,其特征是单个连续执行线程、当前状态和一组相关的系统资源。
计算机系统开发的三大主线在时序和同步方面产生了问题,这有助于进程概念的发展:多道程序批处理、分时和实时事务系统。正如我们所看到的,多道程序设计是为了使处理器和I/O设备(包括存储设备)同时忙碌,以实现最大效率。关键机制是:为了响应指示I/O事务完成的信号,处理器在主存中的各种程序之间切换。
第二条开发路线是分时系统。在这里,关键的设计目标是响应个人用户的需求,但出于成本原因,能够同时支持多个用户。这些目标是兼容的,因为用户的反应时间相对较慢。
第三个重要的发展方向是实时事务处理系统。在这种情况下,许多用户正在针对数据库输入查询或更新。一个例子是一个客机保护系统。事务处理系统和分时系统之间的关键区别在于,前者仅限于一个或几个应用程序,而分时系统的用户可以参与程序开发、作业执行和各种应用程序的使用。在这两种情况下,系统响应时间都是最重要的。
系统程序员在开发早期多道程序设计和多用户交互系统时可用的主要工具是中断。任何作业的活动都可能因定义的事件(如I/O完成)的出现而暂停。处理器将保存某种上下文(例如,程序计数器和其他寄存器),并分支到中断处理例程,该例程将确定中断的性质,处理中断,然后恢复用户对中断作业或其他作业的处理。
协调这些变化的系统软件的设计变得非常困难。由于任何时候都有许多工作在进行,每一项工作都涉及按顺序执行的许多步骤,因此不可能分析所有可能的事件序列组合。
在活动之间缺乏一些系统的协调和合作手段的情况下,程序员根据他们对操作系统必须控制的环境的理解,采用了临时方法。这些努力容易受到微妙的编程错误的影响,只有当某些相对罕见的行动序列发生时,才能观察到这些错误的影响。这些错误很难诊断,因为它们需要与应用程序软件错误和硬件错误区分开来。即使检测到错误,也很难确定原因,因为出现错误的确切条件很难重现。一般来说,此类错误有四个主要原因:
不正确的同步:通常情况下,例程必须暂停,等待系统中其他地方的事件。例如,启动I/O读取的程序必须等到缓冲区中的数据可用后才能继续。在这种情况下,需要一些其他例程的信号。信号机构设计不当可能导致信号丢失或接收到重复信号。
失败的互斥:通常情况下,多个用户或程序会试图同时使用共享资源。例如,两个用户可能试图同时编辑同一个文件。如果不控制这些访问,可能会发生错误。必须有某种互斥机制,每次只允许一个例程对文件执行更新。在所有可能的事件序列下,这种互斥的实现很难被验证为正确的。
不确定的程序操作:特定程序的结果通常只取决于该程序的输入,而不取决于共享系统中其他程序的活动。但是,当程序共享内存,并且它们的执行由处理器交错执行时,它们可能会以不可预测的方式覆盖公共内存区域,从而相互干扰。因此,执行各种程序的顺序可能会影响任何特定程序的结果。
死锁:两个或两个以上的程序可能会挂起,等待彼此的执行。例如,两个程序可能每个都需要两个I/O设备来执行某些操作(例如,磁盘到磁带复制)。其中一个程序已经控制了其中一个设备,另一个程序控制了另一个设备。每个程序都在等待另一个软件释放所需的资源。这样的死锁可能取决于资源分配和释放的时机。
解决这些问题所需要的是一种系统的方法来监测和控制处理器上执行的各种程序。进程的概念提供了基础。我们可以认为一个进程由三个部分组成:
1、一个可执行程序
2、程序所需的相关数据(变量、工作空间、缓冲区等)
3、程序的执行上下文
程序执行上下文至关重要。执行上下文或进程状态是操作系统能够监督和控制进程的内部数据。此内部信息与进程分离,因为操作系统具有不允许进程使用的信息。上下文包括操作系统管理进程所需的所有信息,并且处理器需要正确执行进程。上下文包括各种处理器寄存器的内容,例如程序计数器和数据寄存器。它还包括操作系统使用的信息,例如进程的优先级以及进程是否正在等待特定I/O事件的完成。
图2.8显示了可以管理进程的方式。两个进程,A和B,存在于主内存中。也就是说,为每个包含程序、数据和上下文信息的进程分配了一块内存。每个进程都记录在由操作系统构建和维护的进程列表中。进程列表包含每个进程的一个条目,其中包括一个指向包含该进程的内存块位置的指针。该条目还可能包括进程的部分或全部执行上下文。执行上下文的剩余部分存储在其他地方,也许与进程本身(如图2.8所示)一起,或者经常存储在单独的内存区域。进程索引寄存器将索引包含在当前控制处理器的进程的进程列表中。程序计数器指向该进程中要执行的下一个指令。基本寄存器和限制寄存器定义了进程占用的内存区域:基本寄存器是内存区域的起始地址,限制是区域的大小(以字节或单词为单位)。程序计数器和所有数据引用都是相对于基本寄存器进行解释的,不得超过极限寄存器的值。这可以防止进程间干扰。
在图2.8中,进程索引寄存器表示进程B正在执行。进程A之前正在执行,但已被暂时中断。A中断时所有寄存器的内容都记录在其执行上下文中。稍后,OS可以执行进程切换并恢复进程A的执行。进程切换包括保存B的上下文和恢复A的上下文。当程序计数器加载指向A程序区域的值时,进程A将自动恢复执行。
最后一点,我们在这里简要介绍,是线程的概念。本质上,一个被分配了特定资源的进程可以被分解为多个并发线程,这些线程协同执行以执行进程的工作。这引入了一个由硬件和软件管理的新级别的并行活动。
【真灼机构观点】美国官员指国会或将会通过一项短期提高债务上限的法案 港股通5月12日中芯国际(00981.HK)净流入最多
大市点评 - 2023年5月15日
在周末期间,美国财长耶伦在接受访问时指出,拜登政府和国会共和党在债务限制上正在取得进展并相信最终将可达成协议。据消息指本次民主党方态度有所软化指可能接受为联邦政府支出设立限制。但最终方案依然未定,有官员亦指出即使未来数周没有达成协议,国会可能会通过一项短期提高债务上限的法案。
港股通周五净流出 5.8 亿元,其中,中芯国际(00981.HK)净流入最多,达2.8 亿港元;其次是中国海洋石油(00883.HK)。而中国移动(00941.HK)则录得最多净流出,为 3.9 亿港元;其次是农业银行(01288.HK)。
来源: 凯基证券
大市点评 - 2023年5月15日
在周末期间,美国财长耶伦在接受访问时指出,拜登政府和国会共和党在债务限制上正在取得进展并相信最终将可达成协议。据消息指本次民主党方态度有所软化指可能接受为联邦政府支出设立限制。但最终方案依然未定,有官员亦指出即使未来数周没有达成协议,国会可能会通过一项短期提高债务上限的法案。
港股通周五净流出 5.8 亿元,其中,中芯国际(00981.HK)净流入最多,达2.8 亿港元;其次是中国海洋石油(00883.HK)。而中国移动(00941.HK)则录得最多净流出,为 3.9 亿港元;其次是农业银行(01288.HK)。
来源: 凯基证券
#科技早报##toB圈那些事儿#
比特早报:
1、周鸿祎:不会用GPT的人未来会被淘汰掉;
2、OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件(此举标志着,OpenAI已不仅一家人工智能研究与开发公司,更是一个生态系统的开创者。随着越来越多的开发者创建和发布自己的插件服务用户,也将加快AI广泛渗透人类社会);
3、英伟达GPU持续缺货涨价,新订单12月才能交付;
4、三星电子和Naver拟联手打造生成式AI(安全或许是三星自研生成式AI工具的重要因素之一。此前,据媒体报道,三星电子已禁止员工使用ChatGPT、Bard等生成式AI工具,原因是担心传输到生成式AI平台的数据被存储在外部服务器,导致其难以被追回和删除,并被泄露给其他用户);
5、苹果MR头显将9月量产;
6、超导量子芯片成功编织非阿贝尔任意子;
7、韩国5G平均网速不及预期 上传速度仅为4G的2.8倍(据悉,在5G商用之前,韩国电信运营商声称,与4G相比,5G的速度将快20倍,同时访问能力将提升100倍。就目前来看,实际情况与预期可以是相差甚远);
8、重庆人工智能创新中心正式投用。
https://t.cn/A6NBz1iU
比特早报:
1、周鸿祎:不会用GPT的人未来会被淘汰掉;
2、OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件(此举标志着,OpenAI已不仅一家人工智能研究与开发公司,更是一个生态系统的开创者。随着越来越多的开发者创建和发布自己的插件服务用户,也将加快AI广泛渗透人类社会);
3、英伟达GPU持续缺货涨价,新订单12月才能交付;
4、三星电子和Naver拟联手打造生成式AI(安全或许是三星自研生成式AI工具的重要因素之一。此前,据媒体报道,三星电子已禁止员工使用ChatGPT、Bard等生成式AI工具,原因是担心传输到生成式AI平台的数据被存储在外部服务器,导致其难以被追回和删除,并被泄露给其他用户);
5、苹果MR头显将9月量产;
6、超导量子芯片成功编织非阿贝尔任意子;
7、韩国5G平均网速不及预期 上传速度仅为4G的2.8倍(据悉,在5G商用之前,韩国电信运营商声称,与4G相比,5G的速度将快20倍,同时访问能力将提升100倍。就目前来看,实际情况与预期可以是相差甚远);
8、重庆人工智能创新中心正式投用。
https://t.cn/A6NBz1iU
✋热门推荐