📜  作为开发人员应了解的5个操作系统概念

📅  最后修改于: 2021-08-24 04:35:43             🧑  作者: Mango

作为开发人员,您可能已经将自己的技能集中在解决问题和数据结构上。好吧,毫无疑问,这是最基本的技能之一。除此之外,您是否曾尝试过知道还有什么更重要?考虑一个正在执行代码但程序运行速度太慢的场景。您检查您的代码,发现您的代码没有任何问题。这可能是什么原因?

您应该知道作为开发人员的5个操作系统概念

好吧,原因之一可能是您的操作系统。现在,如果您需要调试程序,那么如果您不知道操作系统的工作方式,该怎么做。您可能会访问过多的文件,内存不足或交换使用率很高。要确实解决此问题,您需要了解有关交换或I / O阻止的知识。

您将如何与机器通信?您是希望在本地使用,还是可以在互联网上使用它?您是否曾经尝试过知道为什么有些程序员偏爱一个操作系统而不是另一个操作系统?

通过以上所有对话,您可能已经了解了学习操作系统为什么很重要的原因。作为开发人员,我们应该了解操作系统的重要性。今天,在此博客中,我们将讨论操作系统的一些重要概念,这些概念将对您作为开发人员的工作有所帮助。

1.流程和流程管理

该过程基本上定义为正在执行的程序。该过程应顺序执行。当您在文本文件中编写计算机程序并执行该程序时,它将成为系统中的一个过程。此过程执行程序中提到的所有任务。一个进程主要分为四个部分:堆栈,堆,文本和数据。

  • 堆栈:堆栈负责存储临时数据,例如函数/方法参数。它返回地址和局部变量。
  • 堆:堆在运行时动态地将内存分配给进程。
  • 文本:文本包括由程序计数器的值和存储在处理器寄存器中的数据表示的当前活动。
  • 数据:它包含全局变量和静态变量。

一个过程主要经历五个不同的状态:开始,就绪,运行,等待,终止或退出。

2.线程的概念

您可以将线程定义为通过流程代码执行的流程。该线程在程序计数器中跟踪接下来需要执行的所有指令。另外,该线程还包含保存当前工作变量的系统寄存器。在线程中,堆栈包含执行历史记录。

线程可以与其对等线程共享代码段,数据段和打开文件。当一个线程更改一个代码段时,所有其他线程都可以看到。线程也称为轻量级进程。通过并行性可以提高应用程序的性能。

一个线程恰好属于一个进程,并且任何线程都不能存在于一个进程之外。线程通常用于实现Web服务器和网络服务器。主要有两种线程…

用户级别的线程:在此级别的线程中,线程管理内核不知道线程的存在。线程库还维护用于创建和销毁线程的代码。它还包含用于在线程之间传递消息和数据的代码。还维护代码以安排线程执行和恢复线程上下文。

内核级线程:线程级管理由内核完成。在应用程序区域中,您将找不到线程管理代码。操作系统直接支持它。

内核还维护各个线程以及整个进程的上下文信息。调度也是基于线程进行的。内核负责创建,调度和管理内核空间。

3.排程

在调度中,进程管理器负责从CPU中删除正在运行的进程,并根据特定策略选择另一个进程。对于多程序操作系统,调度是必不可少的部分。一次可以将多个进程加载到可执行内存中。加载后,该进程将使用时间多路复用来共享CPU。

在流程调度队列中,操作系统维护所有流程控制块。 OS为每个过程状态维护一个单独的队列。处于相同执行状态的所有进程的进程控制块都保存在同一队列中。

主要是您的操作系统维护以下重要的进程调度队列:

  • 作业队列:负责将所有进程保留在系统中
  • 就绪队列:所有准备就绪并等待执行的进程都驻留在主存储器中。
  • 设备队列:此队列存储由于I / O设备不可用而被阻塞的进程

4.内存管理

内存管理是指操作系统处理和管理主内存的功能。在执行过程中,进程在主内存和磁盘之间来回移动。

内存位置可通过内存管理进行跟踪。每次检查分配给进程的内存量。它还决定哪个进程在什么时候获取内存。此外,每当内存释放或未分配时,它都会更新状态。操作系统在分配内存时将逻辑地址映射到物理地址。程序中主要使用三种类型的地址…

  • 符号地址:在源代码中使用。变量名称,常量和指令标签是符号地址空间的基本元素。
  • 相对地址:编译期间,编译器将符号地址转换为相对地址。
  • 物理地址:加载程序负责在程序加载到主存储器中时生成这些地址。

5.进程间通信

在操作系统中,进程分为两种类型:独立和协作。独立的流程不会受到其他流程的执行的影响。一个合作过程受到另一个执行过程的影响。

独立进程可以高效执行,在这些情况下,它们的协作性质可用于提高计算速度,便利性和模块化性。在这种机制中,允许进程相互通信。交流被视为他们之间合作的一种方式。