C_1:linux系统基础

linux进程管理

  • 每个进程有自己独立的运行空间
  • 进程的状态:就绪/运行状态;等待状态(中断);等待状态(不可中断);停止状态;僵死状态
  • 进程的属性:PID(进程ID), PPID(进程父ID),PGID(进程组ID),UID(用户ID)
  • 创建进程 : fork()=子进程复制父进程的全部(除PID);vfork()=复制部分父进程
  • 在子进程中执行新代码: exec()
  • 等待进程结束:wait()+waitpid()=父子进程间同步机制
  • 推出进程:exit
  • 进程调度策略和优先级=sched_setscheduler()
    1. FIFO=先入先出
    2. 最短作业
    3. 最高优先级
    4. 时间片
  • Linux守护进程=后退运行,脱离终端
  • 孤儿进程=父进程先退出

进程间的通信

  • 同一主机进程间的通信

    1. UNIX进程通信方式:a. 无名管道;b. 有名管道;c. 信号
    2. Systm-V进程通信方式: a. 信号量;b. 消息队列; c. 共享内存
  • 不同主机(网络)进程通信: a. RPC ; b. Socket

  • 进程通信_无名管道: 临时的,且只可以在具有亲属关系的进程中通信

  • 进程通信_有名管道:可否无名管道问题

  • 进程通信_信号中断处理:软中断 <signal>

  • System_V=key值和ID值
  • 消息队列
  • 信号量(信号量表示系统可用资源的个数)
  • 共享内存(进程间的大量数据传输)

Linux多线程

  • 线程是进程的一个独立的控制流(pthread API)
  • 线程和进程区别:资源共享
  • 线程间共享:地址空间,信号处理机制,数据,I/O
  • 线程API(POSIX)
功能 线程 进程
创建 pthread_create fork,vfork
退出 pthread_exit exit
等待 pthread_join wait,waitpid
取消/终止 pthread_cancel abort
读取ID pthread_self() getpid
调度策略 SCHD_FIFO等 SCHD_FIFO等
通信机制 信号量,信号,互斥锁,变量条件,读写锁 无名管道,有名管道,信号,信息队列,信号量,共享内存
  • 线程拥有资源
资源
程序计数器
一组寄存器
线程信号编码
局部线程变量
线程私有数据

线程的同步机制

  • 互斥锁=以排他方式防止共享数据并发修改=二元变量,开锁和上锁
    1. 访问该资源前,申请互斥锁
    2. 若是开锁状态则申请到对象,并占有该锁,上锁状态
    3. 若是上锁状态,则处于锁定状态,默认阻塞等待
    4. 只有互斥锁进程可以开锁
  • 变量条件=满足互斥锁的一些不足=和互斥锁配合
  • 读写锁=多个读出,一个写入
  • 线程与信号(线程信号掩码)

死锁

两个或者两个以上的进程之间在执行过程中,因为争夺资源而造成的一种互相等待

  • 死锁的条件
    1. 互斥条件
    2. 请求保持
    3. 不剥夺
    4. 循环等待

远程过程调用(RPC)

sunRPC

你可能感兴趣的:(C_1:linux系统基础)