首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

程序员需要了解的硬核知识之操作系统和应用

2019-12-20

运用核算机运转程序大部分都是为了进步处理功率。例如,Microsoft Word 这样的文字处理软件,是用来进步文本文件处理功率的程序,Microsoft Excel 等表格核算软件,是用来进步账本处理功率的程序。这种为了进步特定处理功率的程序统称为 运用

程序员的作业便是编写各式各样的运用来进步作业功率,程序员一般不编写操作体系,可是程序员编写的运用离不开操作体系,此篇文章咱们就针对 Windows 操作体系来阐明一下操作体系和运用之间的联络。

操作体系 其实也是一种软件,任何新事物的呈现必定都有它的历史背景,那么操作体系也不是凭空呈现的,必定有它的历史背景。

在核算机尚不存在操作体系的年代,彻底没有任何程序,人们经过各种 按钮 来操控核算机,这一进程十分费事。所以,有人开宣布了仅具有加载和运转功用的 监控程序 ,这便是操作体系的原型。经过事前发动监控程序,程序员能够根据需求将各种程序加载到内存中运转。尽管依旧比较费事,但比起在没有任何程序的状态下进行开发,作业量得到了很大的缓解。

跟着年代的开展,人们在运用监控程序编写程序的进程中发现许多程序都有公共的部分。例如,经过键盘进行文字输入,显现器进行数据展现等,假如每编写一个新的运用程序都需求相同的处理的话,那真是太浪费时刻了。因而,根本的输入输出部分的程序就被追加到了监控程序中。初期的操作体系便是这样诞生了。

相似的主意能够共用,人们又发现有更多的运用程序能够追加到监控程序中,比方 硬件操控程序 , 编程言语处理器 以及各种运用程序等,成果就形成了和现在差异不大的操作体系,也便是说,其实操作体系是多个程序的集合体。

汇编言语是一种低级言语,也被称为 符号言语 。汇编言语是第二代核算机言语,在汇编言语中,用助记符替代机器指令的操作码,用地址符号或标号替代指令或操作数的地址。用一些简略了解和回忆的字母,单词来替代一个特定的指令,比方:用 ADD 代表数字逻辑上的加减, MOV 代表数据传递等等,经过这种办法,人们很简略去阅览现已完结的程序或许了解程序正在履行的功用,对现有程序的bug修正以及运营保护都变得愈加简略便当

关于程序员来说,程序员发明的不是硬件,而是各种运用程序,可是假如程序员只做运用不明白硬件层面的常识的话,是无法成为硬核程序员的。 现在训练组织培育出了一批怎样用的人才,却没有训练出为什么这么做的人才 ,究竟 为什么 不是训练组织教的,而是校园教的,我很信任耗子叔说的话:学习没有速成这回事。言归正题。

在操作体系诞生之后,程序员不需求在硬件层面考虑问题,所以程序员的数量就添加了。哪怕自称 对硬件一无所知 的人也或许制造出一个有模有样的程序。不过,要想成为一个全面的程序员,有一点需求清楚的便是,把握硬件的根本常识,并凭借操作体系进行笼统化,能够大大进步编程功率。

下面就看一下操作体系是怎么给开发人员带来便当的,在 Windows 操作体系下,用 C 言语制造一个具有表明当时时刻功用的运用。 time 是用来取得当时日期和时刻的函数, printf 是把成果打印到显现器上的函数,如下:

#include stdio.h 
#include time.h 
void main{
 // 保存当时日期和时刻信息
 time_t tm;
 // 取得当时的日期和时刻
 time;
 // 在显现器上显现日期和时刻
 printf);
}

读者能够自行运转程序检查成果,咱们首要重视硬件在这段代码中做了什么事情

运用的可履行文件指的是,核算机的 CPU 能够直接解说并运转的本地代码,不过这些代码是无法直接操控硬件的,事实上,这些代码是经过操作体系来直接操控硬件的。变量中涉及到的内存分配情况,以及 time 和 printf 这些函数的运转成果,都不是面向硬件而是面向 操作体系 的。操作体系收到运用宣布的指令后,首要会对该指令进行解说,然后会对 时钟IC 和显现器用的 I/O 进行操控。

核算机中都设备有保存日期和时刻的实时时钟,上面说到的时钟IC 便是值该实时时钟。

操作体系操控硬件的功用,都是经过一些小的函数集合体的方法来供给的。这些函数以及调用函数的行为称为 体系调用 ,也便是经过运用从而调用操作体系的意思。在前面的程序顶用到了 time 以及 printf 函数,这些函数内部也封装了体系调用。

C 言语等高档编程言语并不依存于特定的操作体系,这是由于人们期望不管是 Windows 操作体系仍是 Linux 操作体系都能够运用相同的源代码。因而,高档编程言语的机制便是,运用单独的函数名,然后在编译的时分将其转化为体系调用的方法。也便是说, 高档言语编写的运用在编译后,就转化成了运用体系调用的本地代码 。

不过,在高档言语中也存在直接调用体系调用的编程言语,不过,运用这种方法做成运用,移植性并不友爱。

移植性:移植性指的是相同的程序在不同操作体系下运转时所花费的时刻,时刻越少证明移植性越好。

经过运用操作体系供给的体系调用,程序员不用直接编写操控硬件的程序,并且,经过运用高档编程言语,有时也无需考虑体系调用的存在,体系调用往往是主动触发的,操作体系和高档编程言语能够使硬件笼统化,这很了不得。

下面让咱们看一个硬件笼统化的详细实例

#include stdio.h 
void main{
 // 翻开文件
 FILE *fp = fopen;
 // 封闭文件
 fclose;
}

上述代码运用 C 编写的程序, fputs 是用交游文件中写入字符串的函数, fclose 是用来封闭文件的函数。

上述运用在编译运转后,会向文件中写入 你好 字符串。文件是操作体系对磁盘空间的笼统化,就好像咱们在 程序员需求了解的硬核常识之磁盘 这篇文章说到的相同,磁盘就好像树的年轮,磁盘的读写是以扇区为单位的,经过磁道来寻址,假如直接对硬件读写的话,那么就会变为经过向磁盘用的 I/O 指定扇区方位来对数据进行读写了。

可是,在上面代码中,扇区压根就没有呈现过传递给 fopen 函数的参数,是文件名 MyFile.txt 和指定文件写入的 w 。传递给 fputs 的参数,是往文件中写入的字符串 你好 和 fp,传递给 fclose 的参数,也仅仅是 fp,也便是说磁盘经过翻开文件这个操作,把磁盘笼统化了,翻开文件这个操作就能够说是操作硬件的指令。

下面让咱们来看一下代码清单中 fp 的功用,变量 fp 中被赋予的是 fopen 函数的返回值,该值被称为 文件指针 。运用翻开文件后,操作体系就会主动请求分配用来办理文件读写的内存空间。内存地址能够经过 fopen 函数的返回值取得。用 fopen 翻开文件后,接下来便是经过拟定的文件指针进行操作,正由于如此,fputs 和 fclose 以及 fclose 参数中都拟定了文件指针。

由此咱们能够得出一个定论,运用程序是经过体系调用,磁盘笼统来完成对硬盘的操控的。

Windows 操作体系是世界上用户数量最巨大的集体,作为 Windows 操作体系的 资深 用户,你都知道 Windows 操作体系有哪些特征吗?下面列举了一些 Windows 操作体系的特性

API
WYSIWYG

这些是对程序员来讲比较有意义的一些特征,下面针对这些特征来进行别离的介绍

这儿表明的32位操作体系表明的是 处理功率最高的数据巨细 。Windows 处理数据的根本单位是 32 位。这与最一开始在 MS-DOS 等16位操作体系不同,由于在16位操作体系中处理32位数据需求两次,而32位操作体系只需求一次就能够处理32位的数据,所以一般在 windows 上的运用,它们的最高能够处理的数据都是 32 位的。

比方,用 C 言语来处理整数数据时,有8位的 char 类型,16位的 short 类型,以及32位的 long 类型三个选项,运用位数较大的 long 类型进行处理的话,添加的仅仅内存以及磁盘的开支,对功用影响不大。

现在市面上大部分都是64位操作体系了,64位操作体系也是如此。

Windows 是经过名为 API 的函数集来供给体系调用的。API是联络运用程序和操作体系之间的接口,全称叫做 Application Programming Interface ,运用程序接口。

当时干流的32位版 Windows API 也称为 Win32 API ,之所以这样命名,是需求和不同的操作体系进行区别,比方最一开始的 16 位版的 Win16 API ,和后来盛行的 Win64 API 。

API 经过多个 DLL 文件来供给,各个 API 的实体都是用 C 言语编写的函数。所以,在 C 言语环境下,运用 API 愈加简略,比方 API 所用到的 MessageBox 函数,就被保存在了 Windows 供给的 user32.dll 这个 DLL 文件中。

GUI 指得便是图形用户界面,经过点击显现器中的窗口以及图标等可视化的用户界面,举个比如:Linux 操作体系就有两个版别,一种是简练版,直接经过命令行操控硬件,还有一种是可视化版,经过光标点击图形界面来操控硬件。

WYSIWYG 指的是显现器上输出的内容能够直接经过打印机打印输出。在 Windows 中,显现器和打印机被认作平等的图形输出设备处理的,该功用也为 WYSIWYG 供给了条件。

凭借 WYSIWYG 功用,程序员能够轻松不少。开始,为了是现在显现器中显现和在打印机中打印,就必须别离编写各自的程序,而在 Windows 中,能够凭借 WYSIWYG 根本上在一个程序中就能够做到显现和打印这两个功用了。

多任务指的便是一同能够运转多个运用程序的功用,Windows 是经过 时钟切割 技能来完成多任务功用的。时钟切割指的是短时刻距离内,多个程序切换运转的方法。在用户看来,就好像是多个程序在一同运转,其底层是 CPU 时刻切片 ,这也是多线程多任务的中心。

Windows 中,网络功用是作为规范功用供给的。数据库功用有时也会在后边追加。网络功用和数据库功用尽管并不是操作体系不可或缺的,但由于它们和操作体系很挨近,所以被统称为 中间件 而不是运用。意思是处于操作体系和运用的中间层,操作体系和中间件组合在一同,称为 体系软件 。运用不只能够运用操作体系,也能够运用中间件的功用。

相关于操作体系一旦设备就不能简单替换,中间件能够根据需求进行替换,不过,关于大部分运用来说,替换中间件的话,会形成运用也随之替换,从这个视点来说,替换中间件也不是那么简略。

即插即用 指的是新的设备衔接 后就能够直接运用的机制,新设备衔接核算机后,核算机就会主动设备和设定用来操控该设备的 驱动程序

设备驱动是操作体系的一部分,供给了同硬件进行根本的输入输出的功用。键盘、鼠标、显现器、磁盘设备等,这些核算机中必备的硬件的设备驱动,一般都是随操作体系一同设备的。

有时 DLL 文件也会同设备驱动文件一同设备。这些 DLL 文件中存储着用来运用该新追加的硬件API,经过 API ,能够制造出运转该硬件的心运用。

文章参阅:

汇编言语

《程序是怎样跑起来的》第九章

https://baike.baidu.com/item/Windows操作体系/852149?fr=aladdin

热门文章

随机推荐

推荐文章