WJ的操作系统知识点总结

本文详细介绍了操作系统的基础知识,包括操作系统的作用、系统调用的概念、进程与线程的区别、协程的特性、进程状态转换、上下文切换、进程调度算法以及内存管理机制,如分页和分段。此外,还讨论了线程通信和进程通信的不同方式,以及Linux启动的三个关键进程。对于理解操作系统原理和内存管理机制,这篇文章提供了深入的解析。
摘要由CSDN通过智能技术生成


【操作系统篇】

>>>计算机网络篇传送门,超详细总结

PS:本文不适合完全没有OS基础的阅读


什么是操作系统

  • 管理计算机硬件和软件资源
  • 本质是运行在计算机上的软件程序
  • 屏蔽了硬件层的复杂性
  • 内核是操作系统的核心部分,负责内存管理、文件系统管理、硬件设备管理、应用程序管理

系统调用

  • 调用操作系统提供的内核态的功能–>系统调用
  • 用户态与系统级别资源相关的操作–>系统调用向操作系统提出,由操作系统完成
  • 系统调用有设备管理、文件管理、进程管理、进程通信、内存管理。

进程


进程和线程

  • 对操作系统来说线程是最小的执行单元,进程是最小的资源管理单元
  • 无论进程还是线程都是操作系统管理的。
  • 线程是进程中的一条执行流程,一个进程可以拥有多个线程。
  • 同一进程内多个线程之间可以共享地址空间、代码段、数据段、打开的文件等资源;但每个线程都有独立一套寄存器,这样可以确保线程的控制流是相对独立的。
  • 线程同样拥有就绪、阻塞、执行三种基本状态。
  • 线程能够减少并发执行的时间和空间开销。线程创建比进程快、终止也快,切换也快、线程之间传递数据不需要经过内核,交互效率更高。
  • Java中线程状态转换是需要操作系统内核中的TCB(Tread Control Block)模块来改变线程的状态,这一过程需要耗费一定的CPU资源。

线程有自己的 stack,但是没有单独的 heap,也没有单独的 address space。只有进程有自己的 address space,而这个 space 中经过合法申请的部分叫做 process space。Process space 之外的地址都是非法地址。当一个线程向非法地址读取或者写入,无法确认这个操作是否会影响同一进程中的其它线程,所以只能是整个进程一起崩溃。
当一个线程崩溃时,很可能会导致其所属进程的所有线程崩溃。


协程

英文Coroutines是一种比线程更加轻量级的存在。

正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程

协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。

这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。Java的原生语法中并没有实现协程,Python、Go等语言有。
但是有开源框架模拟了协程的功能。


进程的状态和转化

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值