操作系统|开发人员只要会编码就完事了吗?不,他们往往忽略了这些...


操作系统|开发人员只要会编码就完事了吗?不,他们往往忽略了这些...
文章图片
操作系统|开发人员只要会编码就完事了吗?不,他们往往忽略了这些...
文章图片
操作系统|开发人员只要会编码就完事了吗?不,他们往往忽略了这些...
文章图片
作为一名开发人员 , 您可能会将您的技能集中在解决问题和数据结构上 。 嗯 , 毫无疑问 , 这是最重要的技能之一 。 除此之外 , 你有没有想过还有什么更重要?考虑这样一个场景:您正在执行代码 , 但您的程序运行速度太慢 。 你检查你的代码 , 你发现你的代码没有任何问题 。 这背后的原因可能是什么?
嗯 , 原因之一可能是您的操作系统 。 现在如果你需要调试你的程序 , 那么如果你不知道你的操作系统是如何工作的 , 你会怎么做 。 可能是您访问了太多文件、内存不足或交换使用率很高 。 要解决此问题 , 您肯定需要了解交换或 I/O 阻塞 。
您将如何与您的机器通信?你有没有想过为什么有些程序员更喜欢一个操作系统而不是另一个?
从以上所有对话中 , 您可能已经明白为什么学习操作系统很重要 。 作为开发人员 , 我们应该了解操作系统的重要性 。 今天在这个博客中 , 我们将讨论操作系统的一些重要概念 , 它们将有助于您作为开发人员的工作 。
进程与进程管理进程基本上被定义为一个正在执行的程序 。 该过程应按顺序执行 。 当您在文本文件中编写计算机程序并执行该程序时 , 它就成为您系统中的一个进程 。 此过程执行程序中提到的所有任务 。 一个进程主要分为四个部分:堆栈、堆、文本和数据 。

  • 栈:栈负责存储函数/方法参数等临时数据 。 它返回地址和局部变量 。
  • 堆:堆在运行时动态地为进程分配内存 。
  • 文本:文本包括由程序计数器的值和存储在处理器寄存器中的数据表示的当前活动 。
  • 数据:它包含全局和静态变量 。
一个进程主要通过五种不同的状态……开始、就绪、运行、等待、终止或退出 。
2.线程的概念您可以将线程定义为通过流程代码的执行流 。 线程在程序计数器中跟踪所有接下来需要执行的指令 。 此外 , 线程包含保存当前工作变量的系统寄存器 。 在线程中 , 堆栈包含执行历史 。
线程可以与其对等线程共享代码段、数据段和打开的文件 。 当一个代码段被一个线程更改时 , 所有其他线程都会看到这一点 。 线程也称为轻量级进程 。 应用程序的性能可以通过并行性来提高 。
一个线程只属于一个进程 , 任何线程都不能存在于进程之外 。 线程一般用于实现网络服务器和网络服务器 。 主要有两种线程:
用户级线程:在这一级线程中 , 线程管理内核不知道线程的存在 。 Thread 库还维护用于创建和销毁线程的代码 。 它还包含用于在线程之间传递消息和数据的代码 。 还维护用于调度线程执行和恢复线程上下文的代码 。
内核级线程:线程级管理由内核完成 。 在应用区 , 你不会找到线程管理代码 。 它由操作系统直接支持 。
内核还维护各个线程和整个进程的上下文信息 。 调度也是在线程的基础上完成的 。 内核负责创建、调度和管理内核空间 。
3.调度【操作系统|开发人员只要会编码就完事了吗?不,他们往往忽略了这些...】在调度中 , 进程管理器负责将正在运行的进程从 CPU 中移除 , 并根据特定策略选择另一个进程 。 对于多道程序来说 , 调度是操作系统必不可少的部分 。 一次可以将多个进程加载到可执行内存中 。 该进程在加载后使用时间多路复用共享 CPU 。
在进程调度队列中 , 操作系统维护着所有的进程控制块 。 操作系统为每个进程状态维护一个单独的队列 。 处于同一执行状态的所有进程的进程控制块都维护在同一个队列中 。
主要是你的操作系统维护了以下重要的进程调度队列:
  • 作业队列:负责保存系统中的所有进程
  • 就绪队列:在主内存中 , 所有准备就绪并等待执行的进程都驻留在内存中 。
  • 设备队列:该队列存储由于 I/O 设备不可用而被阻塞的进程
4. 内存管理内存管理是指操作系统处理和管理主内存的功能 。 进程在执行过程中在主存和磁盘之间来回移动 。