zoukankan      html  css  js  c++  java
  • Linux系统编程基本常识()

    1.内核是啥玩意儿
    操作系统的核心程序

    2.内核做啥事情
    进程调度
    内存管理
    提供文件系统
    创建或终止进程
    管理设备
    管理网络
    提供系统调用API

    3.CPU的工作模式
    用户模式/用户态
    内核模式/内核态

    4.简述文件系统IO模型
    内核视角看,就一种字节流序列
    用户视角看:文本文件和二进制(数据)文件
    内核提供了通用的系统调用执行IO操作
    通用的几个IO系统调用函数:open、read、write、close

    5.何为文件描述符
    本质是一个非负的整数
    作用代替一个打开的文件
    SHELL程序启动的进程默认继承三个文件描述符:0-标准输入,1-标准输出,2-标准错误

    6.简单说进程
    就是正在执行的程序实例
    内核的处理过程:

    将程序代码加载到虚拟内存中
    为程序分配变量空间
    建立内核记账数据结构
    记录与进程相关的各种信息
    

    从内核看来进程是一个个的实体
    内核必须处理它们之间的各种计算机资源共享

    7.进程的内存布局

    文本:存储程序代码
    数据:存储程序静态变量
    堆:程序动态分配的内存空间
    栈:函数调用,链接信息,局部变量分配的内存空间
    

    8.进程ID和父进程ID

    每一个进程都有一个唯一的整数进程标识符(PID)
    每一个进程都有一个父进程的标识符(PPID)
    进程拥有用户ID(UID)和用户组ID(GID)信息
    

    9.进程的创建和执行
    使用fork函数创建进程,使用execve家族的系统调用函数执行程序

    10.进程终止
    使用_exit系统调用API,或是向进程传递信号,将其杀死
    无论何种方式退出,进程都会生成终止状态

    11.特权进程
    是指有效用户ID为0(超级用户)的进程

    12.INIT进程
    内核创建的第一个进程,所有进程之父

    13.进程间的通信方式

    信号(signals)
    管道(pipes)
    套接字(sockets)
    文件锁(file locking)
    消息队列(message queues)
    信号量(semaphores)
    共享内存(shared memory)
    

    14.线程
    一个进程可以有多个线程
    线程可以想象为共享同一虚拟内存以及其他属性的进程
    线程之间的通信使用共享的全局变量进行通信
    优点一在于协同线程之间的数据共享更为容易
    优点二某些算法实现上,比多进程更加自然

    15.系统调用
    受控的内核入口
    使得进程可以请求内核以自己的名义执行某些动作
    特点:
    系统调用将处理器从用户态切换到内核态以便CPU访问受到保护的内核内存
    系统调用的组成是固定的都有一个唯一的数字来标识
    每个系统调用都有一组参数指定从用户态传递到内核态的信息,反之亦然

    16.处理系统调用和库函数的错误
    系统调用失败后,会设置全局变量errno的值
    使用perror函数可以打印上一次系统调用失败的错误消息
    使用strerror函数获得errno对应的错误信息

    原文链接:https://www.cnblogs.com/y2ghost/p/11692912.html

    千里之行,始于足下!
  • 相关阅读:
    Mac国内源安装brew
    linux基础命令(二)
    运维查看命令
    初识数据库
    镜像/容器相关操作
    docker基本命令
    Docker简介及部署
    CF1599A Weights 构造
    CSP-S 2021 游记
    GeOP 1.0开发成!
  • 原文地址:https://www.cnblogs.com/MINAIot/p/13040995.html
Copyright © 2011-2022 走看看