操作系统简介

cuzz cuzz     2022-10-08     236

关键词:

‘‘‘
操作系统
1. 内存管理
2. 驱动管理
3. 进程线程协程
4. 文件系统

1. 内存
32位电脑 4G
DOS 内存是程序自己控制
Windows 统一的内存空间 4G
虚拟存储器
1. CPU n核心 ALU cpu寄存器
2. 每个核心 L1 L2
3. 整个CPu L3 3M
4. 内存 很大很大8G
5. 硬盘
6. 网络传输

虚拟存储器,统一的内存模型
一个程序 4G 内存+硬盘
电脑4G
a 1G -> 内存中 页表
b 1G -> 内存中 页表

c 3G -> 把a存储,把c load进来

a => page fault
‘‘‘‘‘‘
操作系统
1. 内存管理
2. 驱动管理
3. 进程线程协程
4. 文件系统

1. 内存
32位电脑 4G
DOS 内存是程序自己控制
Windows 统一的内存空间 4G
虚拟存储器
1. CPU n核心 ALU cpu寄存器
2. 每个核心 L1 L2 cache miss
3. 整个CPu L3 3M
4. 内存 很大很大8G
5. 硬盘
6. 网络传输

虚拟存储器,统一的内存模型
一个程序 4G 内存+硬盘
电脑4G
a 1G -> 内存中 页表
b 1G -> 内存中 页表

c 3G -> 把a存储,把c load进来

a => page fault => page load => 正常运行

2. 驱动
ps/2 usb bluetooth
flopy disk
linux: 统一成文件 read write seek
3. 文件系统
数组
[meta元信息 对应的文件位置(偏移量) 对应的文件大小]
格式化: 会把所有信息抹掉
快速格式化:meta清空

所有的问价你,存在同一个file
/main/main.py -> file load -> execute
‘‘‘

‘‘‘
1. 进程 pid 时间片
2. 多线程
3. 线程和进程
进程间通信 pipe file socket
线程通信 n线程来说 我都可以看到进程中的全局数据

对于一个进程来说,你持有了一个页表
对于同一个进程内的线程,你共享同一张页表
4. 多线程同步问题

数组 支持add
1. 把数组size + 1
2. 把add的这个数字放在 data[size]

两个线程 同时add
1. A线程 走了1
2. B线程 也走了1
3. A存了数据 data[size] = xxx
4. B也存了数据 data[size] = xxx

核心在于
你的操作被拆分
解决方案呢?
1. atomic swap_and_cmp
2. 加锁,mutex,信号量,读写锁,自旋锁。

加锁以后,我对这个资源有所有权,
在我所有操作没有结束前,
其他操作这个数据的人,就要等待

数组 支持add
1. 加锁
2. 把数组size + 1
3. 把add的这个数字放在 data[size]
4. 解锁

两个线程 同时add
1. A线程 走了1
2. B线程 也走了1
3. A 2
4. A 3
5. A 解锁
4. b走2,3,4

同步会有问题?产生了死锁
哲学家进餐

1. 为什么死锁?获取资源的顺序不一样
对于底下哲学家 先1后2
对于上面哲学家 先2后1

所有的哲学家都是先1后2
1. 调整最后一个人的顺序
2. 如果我那不到右手,那我左手的也不要

线程安全的交换数据的函数
swap(a,b)
id(a) id(b)
a.lock()
b.lock()
exchange(a.data, b.data)
a.unlock()
b.unlock()

swap(a,b) ------ swap(b,a)

Python? GIL global interpreter lock

并发 并行
不管你多少个线程,只要你系统能处理多个事情,就是并发的
并行 这些事情都是在同一时间执行的 多线程 多进程

同步异步 事件发生与否,需要你自己去检查
事件的发生与否,这个是别人通知给你的
阻塞非阻塞
阻塞 等
不等,就是非阻塞
‘‘‘

‘‘‘
编译 解释 JIT
编译? 一个代码编译成另外一种代码,编译到机器码,目标代码就是机器码
解释? c语言是统一的,那我用c语言写出一个虚拟机,这个机器是可以部署到任何机器的
python语言,语言逐条转换成对应的虚拟机指令
JIT just in time compiler 把最热的代码替换成编译到机器码

动态VS静态
a = ‘‘
a = 1
a = True

a = ‘‘
a = ‘hello‘
a = ‘test‘

强类型弱类型
1 + ‘1‘
1 + 1

有GC 无GC garbage collection
new delete // malloc free c, c++
有gc: java golang python ruby scala js
new
1. mark & sweep concurrent mark sweep
2. ref counting

python
1. ref counting
2. mark & sweep

a b
a.parent = b
b.child = a

weakref

androidrenderscriptrenderscript简介①(gpu简介|gpu系统架构)

文章目录一、GPU简介二、GPU系统架构1、传统GPU系统架构2、移动设备GPU系统架构使用RenderScript编写Android平台运行的高性能计算应用程序;RenderScript官方文档:https://developer.android.google.cn/guide/topics/renderscript/compute一、GPU简介图形处理... 查看详情

系统简介

1.需求分析2.技术分析 查看详情

个性化推荐系统简介

个性化推荐系统简介1.推荐系统简介2.推荐系统产生背景3.推荐系统的作用4.推荐系统和Web项目的区别1.推荐系统简介​个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一࿰... 查看详情

个性化推荐系统简介

个性化推荐系统-简介1.推荐系统简介2.推荐系统产生背景3.推荐系统的作用4.推荐系统和Web项目的区别1.推荐系统简介​个性化推荐(推荐系统)经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一ÿ... 查看详情

macos系统简介

Macos系统简介一.概述MacOSX,这是一个基于UNIX核心的系统,增强了系统的稳定性、性能以及响应能力。它能通过对称多处理技术充分发挥双处理器的优势,提供无与伦比的2D、3D和多媒体图形性能以及广泛的字体支持和集成的PDA功... 查看详情

linux操作系统简介

一:Linux系统概述1.常见操作系统-服务端操作系统:linux、unix、windowsserver-单机操作系统:windows(dos、ucdos、win95、win98、win2000、xp、vista、win7、win8)MAC、linux(ubuntu)-移动操作系统Android、IOS、Windowsphone2.linux操作系统介绍-为什么... 查看详情

2.操作系统简介(代码片段)

操作系统简介如果你正在攻读本科操作系统课程,你应该已经知道计算机程序运行时的功能。如果没有,这本书(以及相应的课程)将会很难-所以你应该停止阅读本书,或者跑到最近的书店,然后快速阅读必要的背景材料(包... 查看详情

线程简介

一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为... 查看详情

tpsfs文件系统简介

1、TpsFs简介     TpsFs(TruePowerSafeFileSystem)是一款掉电安全的文件系统,该文件系统是SylixOS内建文件系统(专利技术)。TpsFs是基于事务的B+树文件系统:对元数据的修改使用事务提交的机制,保证了文件系统的一... 查看详情

mbr简介

概述 本文档介绍磁盘MBR相关概念和引导操作系统流程。   MBR MBR简介 MBR(Main Boot Record),是位于磁盘最前面的一段引导代码,存在于整个磁盘最开始的那个扇区,即0盘0道1扇区(该处用CHS方式表示MBR引导扇... 查看详情

操作系统简介

1.什么是操作系统?操作系统主要用于管理和控制计算机硬件与软件资源。计算机存在很多输入输出设备,端口,处理器,如果程序员必须了解这些东西才能编程那么将会大大降低开发效率,所以操作系统就是代替程序员去了解... 查看详情

操作系统简介

1.什么是操作系统操作系统就是一个协调,管理和控制计算机硬件资源和软件资源的应用程序为何要有操作系统总结:程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的... 查看详情

javascriptasync异步操作库简介

异步操作知识在js世界中,异步操作非常流行,nodejs就是特点基于异步非阻塞。js语言支持的异步语法包括,Promise asyncawaitgeneratoryield。这些语法需要使用者了解非常清楚,往往很困难。下面介绍一个异步操作的超级库,可以... 查看详情

centos简介

Centos作为主流的一种Linux操作系统,以后java1234课程中,比如后期讲Redis,以及部署一些项目,会把Centos作为服务器操作系统,我们选用Centos,主要是免费,以及稳定。 Centos详细介绍,请参考 百度百科  查看详情

操作系统简介

一. 为何要有操作系统1. 一般而言,现代计算机系统是一个复杂的系统。如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了,所以为了优化使用,计算机安装了一层系统软件,称之为操作系统,... 查看详情

计算机基础之——操作系统简介

操作系统简介  一、为何要有操作系统:计算机系统非常庞大难懂,程序员写程序时需要搞懂计算机系统,效率很低。操作系统的出现缓解了程序员的大部分工作,操作系统管理及优化计算机硬件,程序员不需要全部搞懂... 查看详情

操作系统简介

一、为什么要有操作系统  现代的计算机系统主要是由一个或者多个处理器,主存、磁盘、硬盘、键盘、鼠标、先回去、打印机、网络接口及其他的输入输出设备组成。  一般而言,现代计算机系统是一个复杂的系统。如果... 查看详情

操作系统简介

一、为什么要有操作系统现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。1、如果每位应用程序员都必须掌握该系统所有的细节,会严重影响了... 查看详情