美文网首页
操作系统基础知识

操作系统基础知识

作者: aron1992 | 来源:发表于2018-02-23 14:14 被阅读12次

操作系统基础知识

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

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

程序运行内存分配策略

传统策略

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

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

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

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

分段策略

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

分页方式

分页方式

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

MMU

线程

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

程序线程

线程有以下三个状态:

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

线程状态转换图:

线程状态

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

线程安全

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

线程安全问题

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

相关文章

  • 【操作系统笔记】操作系统的基本概念

    往期相关文章:【操作系统基础知识】进程管理 【操作系统基础知识】文件管理 【操作系统基础知识】内存管理 1.概念 ...

  • 【操作系统笔记】操作系统内存管理和jvm内存管理的对比和关系

    在上一次的文章 【操作系统基础知识】内存管理 里学习了操作系统的内存管理的基础知识,今天做个延伸拓展,来学习从操作...

  • 操作系统基础知识

    操作系统基础知识 计算机基础知识主要讲到两个重要的主题: 操作系统为程序分配内存的策略 线程和线程安全 程序运行内...

  • 【JVM笔记】Java中的进程管理

    前一篇文章【操作系统基础知识】进程管理 主要是操作系统相关的基础知识。本篇文章将从jvm的角度研究学习java中的...

  • 操作系统

    源自https://www.cnblogs.com/xdyixia/p/9274909.html 操作系统基础知识...

  • linux操作系统基础知识有哪些

    内容来源(公众号:PHP版WEB项目)linux操作系统基础知识:1、操作系统区分物理内存和虚拟内存;2、了解内存...

  • iOS高级进阶

    基础知识 数据结构 操作系统 编译原理 Python语言 HTTP 工具 Charles (HTTP/HTTPS)...

  • 操作系统知识点大总汇

    一、操作系统基础知识 操作系统的作用:用户接口、存储管理、文件管理、设备管理、处理机管理。 1.存储管理: 2.处...

  • Android应用基础知识

    应用基础知识 Android操作系统是一种多用户Linux系统,其中的每个Android 操作系统是一种多用户 L...

  • 笔记:计算机基础知识和Java IO

    计算机基础知识 内核空间:专门给操作系统用的【物理】内存空间(操作系统的专属空间)用户空间:给用户程序使用的【虚拟...

网友评论

      本文标题:操作系统基础知识

      本文链接:https://www.haomeiwen.com/subject/gjlxxftx.html