操作系统基础知识

操作系统基础知识

计算机基础知识主要讲到两个重要的主题:

  • 操作系统为程序分配内存的策略
  • 线程和线程安全

程序运行内存分配策略

传统策略

和物理地址一一对应,会有如下问题

  • 地址空间不隔离 所有的程序都直接访问物理地址,恶意程序可以很容易的修改其他程序的内存数据,已达到破坏的目的;非恶意的程序不小心修改了其他程序的数据会导致其他程序出问题

  • 内存使用效率低 内存是有限的,需要运行一个程序C而内存中的空闲内存不足时需要把内存中的某个程序所有数据换出到磁盘中,再把程序C的数据写入到内存中,整个过程会有大量的数据换入换出,导致效率低下

  • 程序运行的地址不稳地 程序每次转载运行时,都需要在内存中分配一块足够大的空闲区域,这个空闲区域的地址是不固定的,这个程序的编写带来了一定的麻烦,因为程序编写是,他访问的指令和跳转地址大多是固定的,这会涉及到程序的重定向问题。

分段策略

分段策略

分段策略可以解决传统策略中的第一个和第三个问题,但是第二个问题依然存在

分页方式

分页方式

虚拟存储的实现需要依赖硬件的支持,CPU采用一个叫MMU(Memory Management Unit)的部件来进行页映射

MMU

线程

线程,有时被称为轻量级的进程,是程序流执行的最小单元,一个线程有线程ID、当前指令指针、寄存器集合和堆栈组成。通常,一个进程由多个线程组成,各个线程共享程序的内存空间(代码段、数据段、堆栈)以及一些进程级的资源(如文件的打开和信号)

程序线程

线程有以下三个状态:

  • 运行
  • 就绪 CPU被占用或者CPU时间片用完
  • 等待 等待某一事件(通常是IO)

线程状态转换图:

线程状态

在多线程环境下,两个线程同时进行如下操作,有可能遇到线程安全问题:

线程安全

在多线程环境下,有可能出现如下的结果

线程安全问题

和预期的不一致,其实这个场景可能得到0、1、2三种结果,多个线程共享数据会导致意想不到的结果,可以使用锁的机制实现多线程的数据共享处理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 14,218评论 3 34
  • 一、概要 1、操作系统的内核。 2、操作系统的五大管理功能:进程管理、存储管理、...
    _Jason___阅读 4,816评论 0 3
  • 此时此刻,外面正下着雨。只听外面狂风暴雨,电闪雷鸣,这雨显然来势汹汹。 室内,老公出差,两个宝贝都和我睡,并且都已...
    临壹阅读 1,414评论 0 0
  • 醒来,放上一段音乐,起身煲上想喝的汤水,剪去花草的残枝,摘下成熟的瓜果。哎,这就是我想要的生活,闻花香,谈悲喜,喝...
    非具象阅读 4,231评论 0 2

友情链接更多精彩内容