计算机指令

Linux多线程与同步

萝らか妹 提交于 2020-01-17 01:53:26
典型的UNIX系统都支持一个进程创建多个线程(thread)。在 Linux进程基础 中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 1. 多进程 我们先来看一下什么是多线程。在 Linux从程序到进程 中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有 一个控制权 的存在。当函数被调用的时候,该函数获得控制权,成为 激活 (active)函数,然后运行该函数中的指令。与此同时,其它的函数处于离场状态,并不运行。如下图所示: Linux从程序到进程 我们看到,各个方块之间由箭头连接。各个函数就像是连在一根线上一样,计算机像一条流水线一样执行各个函数中定义的操作。这样的一个程序叫做 单线程 程序。 多线程就是允许一个进程内存在 多个控制权 ,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。即使是单CPU的计算机,也可以通过 不停地在不同线程的指令间切换 ,从而造成多线程同时运行的效果。如下图所示,就是一个多线程的流程: main()到func3()再到main()构成一个线程,此外func1()和func2()构成另外两个线程。操作系统一般都有一些系统调用来让你将一个函数运行成为一个新的线程。 回忆我们在 Linux从程序到进程

系统结构 学习笔记

北慕城南 提交于 2020-01-16 19:52:12
系统结构: 研究的是 有吧?几位的 组成:研究的是怎么做 存取指令 实现:研究的是 具体做的实现了 计算机的存储程序工作原理和硬件系统    冯·诺依曼结构   计算机系统由硬件系统和软件系统两大部分组成。美藉匈牙利科学家冯·诺依曼结构(John von Neumann)奠定了现代计算机的基本结构,其特点是:   1)使用单一的处理部件来完成计算、存储以及通信的工作。   2)存储单元是定长的线性组织。   3)存储空间的单元是直接寻址的。   4)使用低级机器语言,指令通过操作码来完成简单的操作。   5)对计算进行集中的顺序控制。   6)计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五大部件组成并规定了它们的基本功能。   7)彩二进制形式表示数据和指令。   8)在执行程序和处理数据时必须将程序和数据道德从外存储器装入主存储器中,然后才能使计算机在工作时能够自动调整地从存储器中取出指令并加以执行。   这就是存储程序概念的基本原理。    计算机指令   计算机根据人们预定的安排,自动地进行数据的快速计算和加工处理。人们预定的安排是通过一连串指令(操作者的命令)来表达的,这个指令序列就称为程序。一个指令规定计算机执行一个基本操作。一个程序规定计算机完成一个完整的任务。一种计算机所能识别的一组不同指令的集合,管为该种计算机的指令集合或指令系统。在微机的指令系统中

中断&异常

五迷三道 提交于 2020-01-16 04:00:33
中断分类      类别 原因 返回行为 例子 广义 中断 异步中断 ( 狭义中断 ) 中断 ( interrupt) 可屏蔽中断 来自 I/O 设备的信号 总是返回到下一条指令 所有的 IRQ 中断 不可屏蔽中断 电源掉电和物理存储器奇偶校验 同步中断 ( 也称异常 ) 陷阱 (trap) 有意的异常 总是返回到下一条指令 系统调用、信号机制 ( 通过软中断实现 ) 故障 (fault) 潜在可恢复的错误 返回到当前指令 缺页异常、除 0 错误、段错误 终止 (abort) 不可恢复的错误 不会返回 硬件错误 注: 80386有两根引脚INTR和NMI接受外部中断请求信号,INTR接受可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。 中断的定义( wikipedia ) 中断 是指由于接收到来自外围硬件(相对于 中央处理器 和 内存 )的 异步 信号或来自 软件 的 同步 信号,而进行相应的硬件/软件处理。硬件中断导致处理器通过 一个上下文切换(context switch)来保存执行状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令(汇编中的int 指令),以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。软中断陷入内核,常被用于实现系统调用(int 80等)。

Linux多线程与同步

爱⌒轻易说出口 提交于 2020-01-16 03:50:34
典型的UNIX系统都支持一个进程创建多个线程(thread)。在 Linux进程基础 中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 1. 多进程 我们先来看一下什么是多线程。在 Linux从程序到进程 中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有 一个控制权 的存在。当函数被调用的时候,该函数获得控制权,成为 激活 (active)函数,然后运行该函数中的指令。与此同时,其它的函数处于离场状态,并不运行。如下图所示: Linux从程序到进程 我们看到,各个方块之间由箭头连接。各个函数就像是连在一根线上一样,计算机像一条流水线一样执行各个函数中定义的操作。这样的一个程序叫做 单线程 程序。 多线程就是允许一个进程内存在 多个控制权 ,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。即使是单CPU的计算机,也可以通过 不停地在不同线程的指令间切换 ,从而造成多线程同时运行的效果。如下图所示,就是一个多线程的流程: main()到func3()再到main()构成一个线程,此外func1()和func2()构成另外两个线程。操作系统一般都有一些系统调用来让你将一个函数运行成为一个新的线程。 回忆我们在 Linux从程序到进程

冯·诺依曼模型

为君一笑 提交于 2020-01-16 03:14:18
 1945年3月,冯·诺依曼领导的小组发表了“存储程序”方式的电子数字计算机方案EDVAC,宣告了现代计算机结构思想的诞生。“存储程序”方式的基本思想是:必须将事先编好的程序和原始数据送入主存后才能执行程序,一旦程序被启动执行,计算机能在不需要操作人员干预下自动完成逐条指令取出和执行任务。冯·诺依曼以其同事在普林斯顿高级研究员于1946年开始设计“存储程序”计算机,该机被称为ISA计算机,它是现代冯·诺依曼结构计算机的原型机。 冯·诺依曼模型基本思想:   1:采用“存储程序”工作方式。   2:计算机由运算器,控制器,存储器,输入设备,输出设备五个基本部件组成。   3:存储器不仅能存放数据,而且也能存放指令,形式上数据和指令没什么区别,但计算机能区分他们;控制器应能自动执行命令;运算器应该能进行加,减,乘,除四种基本运算,并且也能进行逻辑运算;操作人员可以通过输入/输出设备使用计算机。   4:计算机内部以二进制形式表示指令和数据;每条指令由操作码和地址码两部分组成,操作码指出操作类型,地址码指出操作数的地址;由一串指令组成程序。 来源: https://www.cnblogs.com/tiankongjava/p/6217368.html

看完这个,你就知道Docker是什么了

倾然丶 夕夏残阳落幕 提交于 2020-01-16 01:56:11
在开始谈docker容器之前,先需要清楚什么是虚拟化,什么是容器 虚拟化 如果要⽤简单的语句来阐述虚拟化技术的话,那么可以这么解释: 虚拟化技术是⼀种将计算机物理资源进⾏抽象、转换为虚拟的计算机资源提供给程序使⽤的技术。 这⾥所指的计算机资源,就包括了 CPU 提供的运算控制资源,硬盘提供的数据存储资源,⽹卡提供的⽹络传输资源等。 为跨平台而生 计算机发展早期,各类计算机平台,计算资源所提供的接口都不一样,调用十分混乱,没有像今天一样有相对统一的标准。由于为兼容不同的平台写各种各样的兼容代码,于是虚拟技术运应而生。虚拟化技术通过本身适配不同平台的硬件,抽象成统一的接口,从而实现程序的跨平台。 将虚拟化技术用于资源管理 在虚拟化技术发展的过程中,人们又发现了虚拟化技术的另外一个用途:资源管理。 因为虚拟化技术本来就是对计算机物理资源的抽象转换成虚拟的计算机资源,这样就很容易在这里对计算机资源进行修改,比如可以告诉程序这台计算机只有4G内存,而无论计算机是有16G还是32G,程序都会按照虚拟机告诉它的4G内存来进行使用。 通过虚拟化技术管理计算机资源的方式,不当能让我们对计算机资源的控制更加灵活,而且还能极大的提交计算机资源的使用率。 看到这可能会有些迷惑,虚拟化技术本身就要耗费部分的计算机资源,怎么还能产生1+1>2的效果? 其实这里指的是计算机的使用率,而非计算机的占用率

ios必须知道的事情

佐手、 提交于 2020-01-15 20:37:30
一、 学前提醒 其实 iOS 开发就是开发 iPhone\iPad 上的软件,而要想开发一款软件,首先要学习程序设计语言 iOS 开发需要学习的主要程序设计语言有: C 语言、 C++ 、 Objective-C ,其中 C++ 、 Objective-C 都是以 C 语言为基础,从 C 语言衍生出来的。因此, C 语言是开发 iOS 软件的基础。 从现在开始,沉下心来学习传说中的 C 语言,学习它的语法 正式学习之前,先提醒一句:学习一门语言的语法是比较枯燥的事,很像是在学习 1+1 等于几,不可能在学习 C 语言语法过程中就能马上做出一些好看的 iPhone 软件界面效果 二、 计算机和软件常识 1. 计算机运行原理 1) 硬件基本组成:硬盘、内存、 CPU 2) 各个部件之间的运作协调(右图) 2. 计算机只能识别 0 和 1 1) 0 和 1 组成的指令 2) 0 和 1 组成的数据 3. 计算机和软件的联系 1) 软件的基本概念:指令的集合 2) 软件的安装运行过程 u 安装在硬盘 u 运行在内存 3) 为什么要开发软件:写出能控制计算机的指令 4. 计算机语言 1) 一门跟计算机打交道的语言 2) 方便写出一连串的指令 三、 计算机语言发展史 1. 机器语言 1) 简介:所有代码里面只有 0 和 1 ,每一条指令称为“机器指令” 2) 优点 u 代码能被计算机直接识别

Linux多线程与同步

守給你的承諾、 提交于 2020-01-15 08:02:25
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 典型的UNIX系统都支持一个进程创建多个线程(thread)。在 Linux进程基础 中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 多线程 我们先来看一下什么是多线程。在 Linux从程序到进程 中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。当函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数中的指令。与此同时,其它的函数处于离场状态,并不运行。如下图所示: Linux从程序到进程 我们看到,各个方块之间由箭头连接。各个函数就像是连在一根线上一样,计算机像一条流水线一样执行各个函数中定义的操作。这样的一个程序叫做单线程程序。 多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行。即使是单CPU的计算机,也可以通过不停地在不同线程的指令间切换,从而造成多线程同时运行的效果。如下图所示,就是一个多线程的流程: main()到func3()再到main()构成一个线程,此外func1()和func2()构成另外两个线程

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候

认识shell

若如初见. 提交于 2020-01-14 17:56:24
认识shell 一、由来 第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 Bourne shell ,或直接简称为 sh !而后 来另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计依附于 BSD 版的 Unix 系统中的 shell ,这个 shell 的语法有点类似 C 语言,所以才得名为 C shell ,简称为 csh !由于在学术 界 Sun 主机势力相当的庞大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一个很重 要而且流传很广的 shell 之一 。 二、现状 /bin/sh (已经被 /bin/bash 所取代) /bin/bash (就是 Linux 默认的 shell) /bin/tcsh (整合 C Shell ,提供更多的功能) /bin/csh (已经被 /bin/tcsh 所取代) 三、默认shell 当我们登录系统会获取默认的shell来进行工作,默认的shell记录在/etc/passwd里 [root@test ~]# vim /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin