操作系统高频考点(一)

1、进程与线程的区别


  • 进程是资源分配的最小单位,线程是CPU调度的基本单位。
  • 进程拥有独立的地址空间,线程没有独立的地址空间,但拥有独立的堆栈和局部变量。
  • 在多进程和多线程中,多进程比多线程更健状。由于进程拥有独立的地址空间,所以一个进程异常结束时,不会影响到其它进程;线程没有独立的地址空间,当线程异常结束时,可能会影响到其它线程。
  • 创建进程的开销比创建线程的开销大;进程上下文切换的开销比线程上下文切换开销大。

2、简述进程内存分区


alt

  • 内核空间:存放操作系统代码和数据
  • 栈区:存放局部变量、函数的参数值等,该区域由操作系统控制
  • 动态库/共享内存映射区:可执行程序运行依赖的动态库加载在该区域;mmap映射的共享内存也在该区域
  • 堆区:提供给程序员自行操作的内存区域,malloc/free和new/delete操作的就是这块内存
  • 可读写数据区

(1).bss段:存放未初始化的全局变量、static修饰的局部变量等

(2).data段:存放初始化的全局变量、static修饰的局部变量等

  • 只读数据区:存放二进制代码、一些const修饰变量、字符串常量等

3、内存碎片


  • 如何产生内存碎片

程序员在程序中用malloc向虚拟内存的堆空间动态申请内存,用free释放内存。如果程序存在大量的malloc/free操作且长时间运行,则虚拟内存的堆空间很容易产生内存碎片

  • 什么是内存碎片

内存碎片是指堆空间剩余很多离散的空闲内存,但不能满足malloc的分配请求。内存碎片分为外部碎片和内部碎片。下图描述了部分堆空间的内存分配情况,将堆空间以4字节为单位划分为许多分配块,白色块表示空闲内存,浅蓝色和深蓝色块表示已分配的内存。假设内存分配的最小单位是

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式软件面试笔记 文章被收录于专栏

该笔记涵盖嵌入式软件工程师技术面试中的知识点,归纳总结为:C/C++、操作系统、计算机网络、数据结构与算法、linux常用命令等章节。

全部评论
已订阅,期待更新
点赞 回复 分享
发布于 2023-02-06 16:15 广东
已订阅,期待更新
点赞 回复 分享
发布于 2023-02-06 19:50 广东
1 进程和线程的区别,线程是共享堆空间的吧
点赞 回复 分享
发布于 2023-08-01 19:49 广东

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
6 10 评论
分享
牛客网
牛客企业服务