学编程,来源栈;先学习,再交钱
当前系列: 认识计算机 修改讲义

复习:计算机只认识二进制

所以,@想一想@:大家是用01010100001……和电脑一起玩么?


现代操作系统

如果你的电脑是自己攒的,硬件组装完成之后的第一件事就是:安装windows。

windows就是一种操作系统Operation System):

  • 管理和控制计算机 硬件 软件 资源的计算机 程序,(复习软硬件分离:我们通过软件/代码/程序操作计算机
  • 是直接运行在“裸机”上的最基本的 系统软件
  • 任何其他(应用)软件都必须在操作系统的支持下才能运行。


常用操作系统

图标
说明
特点

windows
图形化界面(GUI),以窗口(window)为核心,主要用于PC(Personal Computer)

Linux
命令行(演示)、主要用于服务器开源免费

苹果
MacOS(用于PC)和iOS(移动端

Android
用于移动端设备(手机和平板)

Chrome
试图用一个浏览器代替操作系统:配合Chrome笔记本发行

补充知识:

  • 计算机分类:超级计算机 > 大型机 > 小型机 > 微型机(1981年IBM推出)> 单片机
  • cmd窗口:可使用DOS(DOS是windows之前的微软操作系统)命令,但本身不是操作系统

更多详见:弯道才能超车:操作系统那些年

@想一想@:为什么在手机上安装APP的时候,要区分Anroid版还是iOS版?


操作系统的功能

我们先说容易理解的,和我们开发关系不大的,O(∩_∩)O~

更友好的用户界面(User interface)

G(Graphic)UI vs cmd

  • Windows,典型的GUI,名称的由来就是其独特的交互“视窗”
  • Linux,典型的cmd

其他,苹果也是靠UI颜值(华丽流畅)俘获用户

用户管理

一人一机 => 多人一机(PC) => 一人一机(手机)

网络通讯(Networking)

网卡:有线 vs 无线

互联网时代到来:网络连接是计算机的一个功能 => 计算机是网络的一个终端

安全机制(Security)

注意:权限≠安全(举例:权限是门,安全是锁)

  • 权限涉及:用户管理(超级管理员/普通用户/访客……)
  • 安全涉及:病毒/木马/加密/黑客攻防……

曾经的争论:Linux 比 windows 更安全吗?

尘埃落定:

  • Linux有先天优势:更简单(做多错多)、开源(阳光是最好的防腐剂)
  • 用户习惯:windows是普通用户,Linux是专业用户
  • 攻击windows成本利益比更高
  • windows的安全性已经越来越高

驱动程序(Device drivers)

安装操作系统的时候,一般也就安装好了驱动程序。(一般操作系统自带常用驱动程序)

驱动(程序)是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口(?),操作系统只有通过这个接口,才能控制硬件设备的工作。

演示:此电脑 - 管理 - 设备管理器 - 某硬件 - 右键:更新驱动程序

所谓设备,典型的就包括:鼠标键盘/声卡/网卡/摄像头……

理解:

  • 操作系统能够响应用户的操作,或者说控制硬件的运行,靠的就是驱动程序
  • 基于操作系统的开发人员,不需要了解底层的驱动。(这就是封装的作用,其实具有浏览器的前端开发、基于.NET或JVM(Java)的后端开发,连操作系统都不用过多的了解)
驱动可以是操作系统开发人员编写,也可以是硬件厂商编写(事实上是双方共同编写)。其实,操作系统对驱动的支持就构成了一个强大而难以替代的“生态”。


文件系统(File system)

普通用户,日常接触最多的,还是文件管理。理解:

  • 文件:演示:显示后缀名和隐藏文件
    说明:
    • windows操作系统才要求后缀名,linux可以没有……
    • 后缀名仅供windows便捷的确定文件类型,自动呈现图标、确定调用软件等
  • 文件夹:文件夹层层嵌套,形成了一个”状结构

  • 路径:如何找到某个文件/文件夹,比如:C:\Users\tanye\Desktop\桌面快捷\零碎图片\plan

其中,文件可以被分为两种:

  • 文本文件:能使用通用编码格式(复习)解码成人类可读的文字符号,表现为能直接用记事本打开,不是乱码
  • 二进制文件:非文本文件都可以统称为二进制文件。这种文件需要特定的软件按特定的方式读取并处理

常用DOS命令

演示:打开cmd窗口

盘符转换:直接F:(不要忘记后面的冒号)

目录操作:

  • dir(directory):显示当前目录下所有文件/文件夹
  • md(make directory):创建一个文件夹
  • rd(remove directory):删除文件夹
  • cd(change directory):转到文件夹
    • 绝对路径:盘符打头直接定位
    • 相对路径:当前目录和上一级目录用..(两个点)表示

文件操作:   

  • type nul > [filename]:本义是将nul(空)导入filename中,filename既然不存在,就新建一个
  • [应用程序]:直接输入应用程序名称,就可以打开该应用程序;后接文件名,就用该应用程序打开该文件
  • del:删除文件

概念理解【选】

(较为抽象:下期移到J&C部分

I/O(Input/Output):很多编程语言会用IO来代表文件操作。这是因为以CPU和内存,或者当前运行时(简单理解为当前在CPU和内存中运行的程序)为参照物,文件的读写就是输入输出的过程。

(stream):在对文件进行读写的时候,我们有时候会说“文件流”,有时候我们还会听到“数据流”的说法,啥意思?

文件的本质是一个有序的(ordered)命名的(named)字节(byte)组合,对文件的读取和写入,就像给池塘抽水灌水一样,会形成和水流一样的数据流(stream)。

除了文件读写会形成“流”,网络数据交换也可以是“流”,甚至内存里面的大段数据移动,也可以是“流”……


序列化(serilize):简单的理解,内存中存放数据(对象)的格式/方式,和外存(硬盘/网络)中存放数据(文件)的方式是不一样的。如果我们需要将内存中的对象用硬盘保存(或网络传输),就需要将其序列化,即转换成文件的字节流格式。反之,将以文件格式的数据还原成内存中的对象,就被称之为反序列化(deserialize)。


内存管理

地址映射

内存(外存也一样)是一块一块的,每一块都有它的地址。(联想:宿舍/街区/仓库)

归根结底,我们的程序,总是通过地址找到内存,然后再读取到其中的数据。

  • 1、2、3:地址
  • 源栈、飞哥、一起帮:存储内容

内容还可以是另一个内存的地址

内存的地址又被称之为指针(pointer),或者引用(reference)。

物理 vs 逻辑 vs 虚拟

没有操作系统的时候,程序直接使用内存的物理(真正的)地址。

@想一想@:这样做的问题在哪里?

引入操作系统之后,

  1. 只有操作系统才知道计算机内存的真实物理地址
  2. 应用程序使用的内存地址是虚拟的、逻辑
  3. 为了最终实现程序目的,需要在物理地址和虚拟地址之间建立关系,这被称之为映射

现代编程语言更进一步,通过编译/解释器、垃圾回收等机制,让开发人员根本(至少99.99%的时候)不用操心内存的使用。

学习笔记
源栈学历
键盘敲烂,月薪过万作业不做,等于没学

作业

觉得很 ,不要忘记分享哟!

任何问题,都可以直接加 QQ群:273534701

在当前系列 认识计算机 中继续学习:

多快好省!前端后端,线上线下,名师精讲

  • 先学习,后付费;
  • 不满意,不要钱。
  • 编程培训班,我就选源栈

更多了解 加:

QQ群:273534701

答疑解惑,远程debug……

B站 源栈-小九 的直播间

写代码要保持微笑 (๑•̀ㅂ•́)و✧

公众号:源栈一起帮

二维码