操作系统开发

day08

别来无恙 提交于 2019-11-29 00:25:32
目录 今日学习 可变和不可变 列表的内置方法 字典的内置方法 周总结 计算机基础之编程 什么是编程语言 什么是编程 为什么要编程 计算机组成 cpu 控制器 运算器 存储 主存 外存 输入设备 输出设备 应用程序的启动 32位和64位 多核cpu 机械硬盘工作原理 机械手臂 磁道 扇区 平均寻道时间 平均延迟时间 平均寻找数据时间 计算机操作系统 什么是文件 操作系统有什么用 操作系统的启动 编程语言的分类 机器语言 汇编语言 高级语言 网络的瓶颈效应 变量 什么是变量 变量的三大组成 变量名的命名规范 两种变量名的方式 数据类型 数字类型 整型 浮点型 字符串 列表 字典 流程控制 if判断 for循环 for+break for+continue for循环嵌套 文本处理 基本的文件操作 文件的三种模式和2种方法 with管理文件上下文 异常处理 今日学习 可变和不可变 # 可变:列表/字典 --> 值变id不变(原值修改,去了韩国一趟) # 不可变:数字/字符串 --》 值变id也变化(克隆了一个) 列表的内置方法 只能给列表用 lt=【1,2,3】 1.索引取值/索引修改值 lt【0】=2 print(lt) 2. 索引切片 print(lt【0:1】) 3.成员运算in/ not in print(2 in lt) #True 4. for循环 for i in lt:

本周回顾

混江龙づ霸主 提交于 2019-11-29 00:17:27
目录 计算机基础之编程 什么是编程语言 什么是编程 为什么要编程 计算机组成 CPU 控制器 运算器 存储器 主存(内存)0.1ms 外存(石更盘)0.11ms 输入设备 输出设备 应用程序的启动 32位和64位 机械硬盘的工作原理 机械手臂 磁道 扇区 平均寻道时间 平均你延迟时间 平均寻找数据时间 计算机操作系统 什么是文件 操作系统有什么用 操作系统的启动 编程语言的分类 机器语言 汇编语言 高级语言 编译型 解释型 网络的瓶颈效应 变量 什么是变量 变量的三大组成 变量名的命名规范 两种变量名的方式 数字类型 字符串 列表 字典 流程控制 流程控制之if判断 流程控制之for循环 文件处理 基本的文件操作 文件的三种模式和两种方式 with管理文件和上下文 异常处理 计算机基础之编程 什么是编程语言 编程语言是人与计算机交流的介质 什么是编程 通过编程语言写一堆文件 为什么要编程 取代劳动力,帮人类干活 计算机组成 CPU 控制器 控制硬件 运算器 算数运算+逻辑运算 存储器 存储数据 主存(内存)0.1ms 优点:速度快 缺点:容量小,断电即小时 外存(石更盘)0.11ms 优点:容量大,永久存储 缺点:速度慢 输入设备 输入信息,如键盘,鼠标 输出设备 输出信息,如显示器,打印机 应用程序的启动 1.双击qq(找到qq路径) 2.操作系统通知cpu

并发编程

和自甴很熟 提交于 2019-11-28 22:27:26
目录 7操作系统发展史 1操作系统 2操作系统的发展史 3进程的理论 8开启进程的方式 9获取进程pid 10进程之间的空间隔离 11join 12进程的其他参数 13守护进程 14僵尸进程 孤儿进程 15互斥锁 16进程之间的通信 16.1基于文件进程之间的通信 16.2基于队列进程之间的通信 17生产拿消费者模型 18开启线程的两种方式 什么是线程? 19多线程与多进程开启速度的区别 20线程进程pid 线程内数据 21线程的其他方法 22join与守护线程 22互斥锁 23死锁现象递归锁 信号量 24GIL全局解释器锁 IO计算密集型验证 25多线程实现socket通信 26线程池 进程池 27同步调用 异步调用 2 1同步调用 2 2异步调用 28异步调用 回调函数 29线程队列 30event 31协程 7操作系统发展史 1操作系统 为什么要有操作系统 管理控制协调计算机中硬件与软件的关系 操作系统的作用?   精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图1 #操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的。 细说的话

线程基础

﹥>﹥吖頭↗ 提交于 2019-11-28 17:33:45
摘要:在计算机发展早期,CPU的资源十分昂贵,如果一个CPU只能运行一个程序,那么当读写磁盘是CPU就只能处于空闲状态,造成了极大的浪费。从而有了 多道程序 的方式,即编译一个监控程序,当程序不需要使用CPU时,将其他在等待CPU的程序启动。该方式大大提高了CPU的利用率,但它的弊端是不分轻重缓急,有时候一个交互操作可能要等待数十分钟。 分时系统 :每个CPU运行一段时间后,就主动让出给其他CPU使用。Windows早期版本和Mac OS版本都是采用的这种分时系统来调度程序的。但是一旦有任何程序出现问题无法主动让出CPU给其它程序的话那么操作系统也没有办法,其它程序只能等待,造成死机假象。 多任务系统 :操作系统接管了所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用都以进程的方式运行在比操作系统更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。CPU由操作系统进行同一分配,每个进程根据进程优先级的高低都有机会获得CPU,但如果运行超过一定的时间,CPU会将资源分配给其他进程,这种CPU分配方式是抢占式,操作系统可以强制剥夺CPU资源并且分配给它认为目前最需要的进程。如果操作系统分配每个进程的时间很短,就会造成很多进程都在同时运行的假象,即所谓的宏观并行,微观串行。 什么是线程 线程(Thread),有时被称为轻量级进程(Lightweight

操作系统前世今生

馋奶兔 提交于 2019-11-28 17:27:21
1965 年开始 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,(目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。最终失败)。 UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到Multics,以肯•汤普森为首的贝尔实验室研究人员吸取了 Multics 工程计划失败的经验教训,于 1969 年实现了一种分时操作系统的雏形,1970 年该系统正式取名为 UNIX。 1971-1972 年,肯•汤普森的同事丹尼斯•里奇发明了传说中的 C语言 ,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中, 汇编语言 不再是主宰。 Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得

漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?

两盒软妹~` 提交于 2019-11-28 17:14:10
周末在家休息,女朋友在刷朋友圈,突然她问我: 鸿蒙OS回顾 2019年8月9日华为开发者大会上,华为消费者业务CEO余承东正式宣布发布自有操作系统鸿蒙,内核为Linux内核、鸿蒙微内核和LiteOS。未来将摆脱Linux内核和LiteOS,只有鸿蒙微内核。 鸿蒙(英语:Harmony OS,开发代号Ark)是华为自2012年开发的一款可能兼容Android app的跨平台操作系统。 图:鸿蒙OS的四大技术特性 1.分布式架构首次用于终端OS,实现跨终端无缝协同体验 2. 确定时延引擎和高性能IPC技术实现系统天生流畅 3. 基于微内核架构重塑终端设备可信安全 4. 通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享 什么是跨平台 在以前, 平台 ≈ 操作系统 。所以,传统意义上的跨平台即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。 但是随着科技的发展, 平台 ≈ 操作系统 已经不成立了,就像华为推出的鸿蒙OS,他可以支持到多种多样的设备,如手机、手表、电脑、汽车、智能家居设备等。 所以,今天我们谈的跨平台,指的是跨设备。即 平台 ≈ 设备 所以,华为希望鸿蒙OS可以运行在各种各样的设备上,所以,鸿蒙OS必然需要具备跨平台的能力。 而且,鸿蒙想要做的不仅仅是操作系统可以跨平台,更重要的是要让用户和开发者真正的感受到跨平台。

深入浅出计算机组成原理学习笔记:SSD硬盘(下)-如何完成性能优化的KPI?(第47讲)

て烟熏妆下的殇ゞ 提交于 2019-11-28 15:52:44
一、引子 1、为什么Windows操作系统、用了SSD的系统盘,就不能用磁盘碎篇整理功能? 如果你平时用的是Windows电脑,你会发现,用了SSD的系统盘,就不能用磁盘碎片整理功能。这是因为,一旦主动去运行磁盘碎片整理功能,就会发生一次块的擦除, 对应块的寿命就少了一点点。这个SSD的擦除寿命的问题,不仅会影响像磁盘碎片整理这样的功能,其实也很影响我们的日常使用。 2、读多的场景 我们的操作系统上,并没有SSD硬盘上各个块纸目前已经擦写的情况和寿命,所以它对待SSD硬盘和普通的机械硬盘没有什么区别。 我们日常使用PC进行软件开发的时候,会先在硬盘上装上操作系统和常用软件,比如Office,或者工程师们会装上VS Code、WebStorm这样的集成开发环境。 这些软件所在的块,写入一次之后,就不太会擦除了,所以就只有读的需求。 3、写多的场景 一旦开始开发,我们就会不断添加新的代码文件,还会不断修改已经有的代码文件。因为SSD硬盘没有覆写(Override)的功能,所以,这个过程中,其实我们是在反复地写入新的文件,然后再把原来的文件标记成逻辑上删除的状态。等SSD里面空的块少了, 我们会用“垃圾回收”的方式,进行擦除。这样,我们的擦除会反复发现在这些用来存放数据的地方。 有一天,这些块的擦除次数到了,变成了坏块。但是,我们安装操作系统和软件的地方还没有坏

操作系统--进程间通信(一)

江枫思渺然 提交于 2019-11-28 14:47:16
原文引用 https://www.dazhuanlan.com/2019/08/26/5d632d2a07f58/ IPC 运用范畴 配图与本文无关,纯属有趣 相对于做点什么,我们更想睡懒觉,但是相对于睡觉,我想写总结! 今天把博客的 git 分支搞混了,浪费了一点时间。那么今天介绍一下进程间通信( IPC ) 。进程间通信,我们从 << UNIX 网络编程卷2:进程间通信 >> 最后一章 Sun RPC 谈起,那为什么呢? 因为我们去掌握一个东西,肯定是因为它有价值,我们才去学习,如果一些技术现在都不用了,淘汰了,那我们就没有必要去深究,只需学习其思想,浅尝辄止即可。 最后一张概述部分是这样介绍的,构筑一个应用进程时,我们首先在以下两者之间作出选择: (1) 构筑一个庞大的单一进程,完成全部工作; (2) 把整个应用进程散步到彼此通信的多个进程中。 如果我们选择后者,接下去的抉择是: 这本著作主要关注的是 2a 这种情况,也就是 使用 消息传递 、 共享内存 、并可能使用某种形式的 同步 来进行同一台主机上的进程间 IPC 。同一进程内不同线程间的 IPC 以及不同进程内各个线程间的 IPC 只是这种情形的特殊情况。 而对于不同部分之间需要网络通信的应用进程则大多数使用 显示网络编程 ( explicit network programming )方式编写,也就是我们现在流行的

快速掌握Docker必备基础知识

强颜欢笑 提交于 2019-11-28 14:45:18
快速掌握Docker必备基础知识 Docker 是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把 Docker 理解为一个轻量级虚拟机,但其实 Docker 与虚拟机( VM )是两种不同的计算机虚拟化技术,也有很多人会觉得,有了虚拟机,那为什么还要使用 Docker 呢? 带着心里的一点点疑问,让我们一起来学习 Docker 吧。 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们要部署一个应用程序( Application ),一般的步骤是怎么样的? 第一步肯定是先要准备一台物理服务器,然后在物理服务器上安装一个操作系统( Operating System ),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示: 物理服务器部署应用示意图 那么,这种方式有什么问题呢?其实,在物理机上部署应用有以下几个缺点: 部署非常慢:因为我们得先准备硬件服务器,接着还要安装操作系统,然后再部署应用程序,而且应用程序还有很多的依赖软件,所以这个过程是比较慢的。 成本非常高:主要是物理器成本太高,即使是部署一个简单的应用,也需要一台服务器。 资源浪费:如果应用太简单,也容易浪费硬件资源,比如 CPU 和内存 迁移和扩展太慢:如果需要迁移应用,或者扩展应用,都要再准备其他的物理服务器,过程很麻烦

01计算机基础小结

北城余情 提交于 2019-11-28 14:42:50
目录 一、编程语言 1. 什么是编程语言 2. 什么是编程 3. 为什么编程 4. 编程语言有哪几种 (1)共3大类:==机器语言、汇编语言、高级语言== 二、计算机组成 1. 冯诺依曼机的五大组成 2. 操作系统 (1)有了操作系统后计算机分为3大组成: (2)操作系统有什么用 (3)文件 (4)应用程序的启动 (5)操作系统的启动 三、网络的瓶颈效应 一、编程语言 1. 什么是编程语言 ​ 编程语言就是人与计算机交流的介质。 2. 什么是编程 通过编程语言编写一堆文件 3. 为什么编程 编程的目的是帮助人类完成某些具体的事情,代替劳动力 4. 编程语言有哪几种 (1)共3大类:==机器语言、汇编语言、高级语言== 机器语言 :全是由0和1组成的一串串数字,能直接被机器识别。 优点:执行效率非常高。 缺点:开发非常困难 汇编语言 :由一些关键字封装算法,如add(a,b),表示a+b。 (相较于机器语言的优缺点)优点:开发效率高。 缺点:执行效率低 高级语言 :高级语言分为两大类:编译型语言和解释型语言 编译型语言 :就是如今的一行行代码。类似Google翻译的翻译方式,一次性把全部代码翻译完,再运行。 如:C/C++/Java/Go (相较于解释型语言的优缺点)优点:执行效率高。 缺点:开发效率低(找BUG困难) 解释型语言 :也是如今的一行行代码。类似同声传译的翻译方式