Linux中计算机基础理论

计算机基础理论

1.main主程序

1.1 main程序参数

main程序是存在三个参数的

#include<stdio.h>

//argc -> 主函数参数的个数
//argv -> 字符数组存放参数内容
//envp ->字符数组存放环境变量(从父进程继承下来的环境变量)
//环境变量envp与参数内容argv都是以NULL作为结尾

int main(int argc,char* argv[],char* envp[])
{
    printf("%d\n",argc);
    for(int i=0;i<argc;i++)
    {
        printf("%s\n",argv[i]);
    }
    for(int i=0;envp[i]!=NULL;i++)
    {
        printf("%s\n",envp[i]);
    }
    return 0;
}

2.shell终端

2.1 概念

用户->计算机硬件->shell->内核

shell使用户和Linux内核交互的接口程序

shell终端

在提示符输入命令,经过shell先命令的解释 后传递内核。

shell 通过$PATH寻找可执行程序(应用程序),若找到可执行程序,可执行程序被分解为系统调用并传递给内核执行

2.2 bash和shell的关系

bash->born again shell

ps:shell ->手机 bash->小米手机

Linux中很多shell,bash 是通用的一种

3.printf的缓冲区

windows 无缓存

linux 有缓存

/n 行缓冲

ps:printf(“hello”); 先输出到缓冲区中

刷新缓冲区:

1.程序结束前(return exit)

ex:

return:关键字,当前功能的结束

exit:刷新缓冲区,调用_exit结束程序

_exit:内核级别函数,结束程序但没有刷新动作

2.强制刷新缓冲区:碰见/n字符

3.强制刷新缓冲区:碰见fflush(stdout) 刷新缓冲区

4.缓冲区存放满

4.进程管理

4.1 概念

进程是操作系统资源分配和调度的基本单位

进程指一个正在运行的程序。进程=程序+数据+PCB

PCB:即是进程控制块,是进程存在的唯一标志。用来描述进程的属性信息。OS是根据PCB来对并发执行的进程进行控制和管理

4.2 调度算法

资源的有限性,必须按照一定的原则选择进程(请求)来占用资源

4.2.1 时间片轮转法

通过CPU进行调度(CPU调度只会从就绪队列取PCB)

4.3 进程描述

系统正在运行的程序就成为进程

程序只占磁盘空间,不占用系统运行资源。

进程是操作系统资源分配和调度的基本单位。

所有的进程都需要CPU进行运算和处理,而CPU在同一时刻只能处理一个进程

4.4 进程状态

进程状态

5.计算机基本组成

5.1 计算机组成五大部件

5.1.1 运算器

也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻 辑运算,移位,比较等。

5.1.2 控制器

它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证 计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。

5.1.3 储存器

存储程序和各种数据。

5.1.4 输入设备

把人所熟悉的信息如,图片,声音,文字,转换为计算机能够识别的信息 存储起来。

5.1.5 输出设备

把计算机机能识别的信息转换为人能识别的信息,进行呈现。

5.2 计算机的工作过程

用户打开程序

系统把程序代码段和数据段送入计算机的内存

控制器从存储器中取指令

控制器分析,执行指令,为取下一条指令做准备

取下一条指令,分析执行,如此重复操作,直至执行完程序中全部指令,便可获得全部指令

5.2.1 程序运行的过程:

1)main.c 代码与数据通过编译链接过程 加载到内存(主存)代码段.text 数据段 .data

2)CPU(控制器)从主存上取 指令 执行

3)执行完当前指令,继续取下一条指令继续执行。循环往复

5.3 系统总线

5.3.1 定义

连接计算机各部件之间或各计算机直接的一束公共信息线,它是计算机中传送信息代码的公共途径

5.3.2 特点

同一组总线在同一时刻只能接受一个发送源,否则会发生冲突

信息的发送则可同时发送给一个或多个目的地

5.3.3 系统总线的分类

(1) 数据总线 : 数据总线DB用于传送数据信息,在中央处理器与内存或I/0设备之间传送数据,是双向传输总线

(2) 地址总线 : 用来指出数据总线上的源数据或目的数据在主存单元的地址或 io 设备的地址。

(3) 控制总线 : 由于各个连接在数据总线和地址总线的部件都是共享这两类总线的,那么在某一时刻由谁来使用,就是控制总线负责完成的。

6. 内存管理

6.1 物理内存

真是存在的内存

6.2 虚拟内存

虚拟内存提供的三个重要的能力:

1) 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,根据需要在磁盘和主存之间来回传送数据,使得能够运行比内存大的多的进程。

2) 它为每个进程提供了一致的地址空间,从而简化了存储器管理

3) 它保护每个进程的地址空间不被其他进程破坏

6.3 物理地址

加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查。

6.4 逻辑地址

CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值