操作系统知识总结

1,018 阅读2分钟

这是对我之前学习操作系统笔记的总结,同时也想分享给你们一些关于操作系统的知识,希望能对你们有点帮助。

操作系统关键点:进程和线程、寻址

进程和线程的区别

我们可以通过进程与线程的结构来看看它们的区别,如图所示。

1、线程是进程里面的一部分,一个进程里面可能有几十个到几百个不等的线程

2、进程间无法共享内存,进程间的通信可以通过 TCP/IP的端口来实现;线程间的通信可以通过共享的内存。

3、进程中的内存是逻辑内存,32位64位操作系统是根据进程中的逻辑内存的寻址空间来区分的。

4、每个进程的内存空间都是相互独立的(如果不相互独立把指针指向别的程序中入微信或者手机银行就能获取到微信的聊天记录和手机银行的密码,是非常危险的)。

5、文件和网络资源是所有的进程所共有的(如多个程序可以打开同一个文件,或者多个程序去抢占用一个网络端口)

名词补充:

PC:下一条执行指令的地址progma count

缓冲区溢出:用过长的输入,超过缓冲区的大小后,将代码覆盖到程序区

TLS:线程的独立内存

存储和寻址

存储:操作系统的存储是结构化的。

硬盘/SSD->内存->CPU 缓存->寄存器(离 CPU 距离最近)。

从左到右速度越快,价格也越来越贵

寻址空间:每一个进程里面的指针可以取到的地址的范围,这个和机器上的物理内存的大小是没有关系的。32位寻址空间为4G。64为寻址空间10^19Bytes。64位 JVM 意味着可以使用更大内存,32位 JVM 迁移到64位 JVM需重新编译。

进程间的通信

进程间的通信:文件、Signal(一个进程给另一个进程发送的数字信号)、消息队列、管道/命名管道(不命名的管道一般是单向的,命名管道有时单向,有时双向)、共享内存(需操作系统同意)、同步机制(信号量)上述几种方式只能用于同一台机器。Socket可以用于不同机器之间的进程通信

这里只列出操作系统几个重要的方面,除此之外,操作系统的知识还有很多,想要深入学习操作系统,还需要买一些相关的书籍进行学习,这里要是写得哪里有错误欢迎指出,也欢迎你们留言。(PS:老实说,我这图画得真不这么样)