计算机基础篇之二

目录

  1.1 编程语言

    1)低级语言

    2)高级语言

  1.2 内核kernel

  1.3 程序

  1.4 进程

  1.5 cpu内存空间

1.1 编程语言

1)低级语言        #离机器越近语言   
    #二进制机器指令
    #汇编语言             #ADD,R0,R1,ST...
2)高级语言        #离近人类越近的自然语言
    #编译型语言          #c,c++,go...
    #解释型语言          #c#,python,java,swift,basic...

1.2 内核kernel 

  #是一个通用软件,运行在硬件上,不负责具体的工作,只是协调各个程序,将硬件资源所提供的硬件能力抽象成一个个系统调用(#system call),系统调用过于底层(由上层的程序员决定它的表现形式)
  #将底层系统调用再次封装成更高级的接口,这个高级接口就是库(library),库没有程序的执行入口,只能被调用(API  #Application Program Interface)
 #在面向库的编程时,应用程序写出来的程序接口叫API,如果编译成二进制格式,这个接口叫ABI(应用二进制接口)
#执行用户代码的机制叫"用户空间",用户空间发起的系统调用,执行内核代码的机制叫"内核空间" (cpu运行在用户空间)

1.3 程序

#程序可以通过系统调用直接运行在内核上(执行效率更高,权限更大)也可以通过库调用来完成(使用库调用进行编程可能更简单)
#程序必须有执行入口(#二进制文件开头处有一个特殊字符,可以标识这个二进制程序的执行格式,也称程序的魔数。如:"!/bin/bash")

1.4 进程

进程的创建
    #当运行"ls"命令时,就创建一个进程.
    #系统开机,先把内核代码放在cpu上运行,当内核接管一切后,就和硬件没关系了,内核负责启动进程,它会派出一个使者来管理进程,创建的第一个进程,该进程就叫初始化进程,后续用户空间的所有管理工作就右init这个使者来管。
    #进程分子进程,和子子进程...
    #父进程由fork自身而来,内核都有一个系统调用,叫fork.父进程,需要创建子进程时需要向内核发起请求,子进程不能脱离父进程,需要共享内存空间,子进程有自己的ID,子进程需要修改进程空间数据时,父进程就复制自己的一份数据给子进程,这时子进程就可以修改空间数据,这种进制叫cow
    #子进程由父进程销毁
    #子进程处理数据时,父进程以静默方式存在,等子进程执行完成时,子进程的使命也结束了,即退出。父进程继续执行其他任务

1.5 cpu内存空间

#cpu级别:
#cpu有4个级别的保户机制(同心圆的4个环) #0级环,特权级别,只有内核才能运行在特权模式下 #中间两环系统保留 #其他应用程序运行在最外环,
任何时候应用程序是不能访问内存中处于0级别的区域(CPU的0级别会映射给内存的某一段处于保护的空间当中)
  #当多个jobs运行时,cpu会分割成多个时间片,当一个程序使用1S时,暂停(保户现场的机制)在处理第二个程序的1s,两个程序交替执行。
#内存空间:
  第一段:ROM,固化在主板上
  第二段:载入内核(kernel space)
  第三段:其他应用程序共享
#虚拟地址空间:每一个程序运行时,都假设自己有一个虚拟地址空间,32位系统为4G,64位系统即"2^64",真实情况下,一个程序其实只占用几M空间而已
进程:
  就是运行程序的实例,它的生命周期就是程序的开始到结束。
成功的背后都是汗水
原文地址:https://www.cnblogs.com/xiaofu89120/p/12041491.html