美文网首页
程序员需要了解的计算机底层知识之进程、线程、纤程、中断

程序员需要了解的计算机底层知识之进程、线程、纤程、中断

作者: 彭阿三 | 来源:发表于2020-12-11 10:08 被阅读0次

程序员需要了解的计算机底层知识之进程、线程、纤程、中断

面试高频:进程和线程有什么区别?
答案:普通:进程是程序运行起来的状态,线程是一个程序的执行路径。 专业:进行是OS分配资源的基本单位,线程是执行调度的基本单位。分配资源最重要的是独立的内存空间,线程调度执行(线程是共享进程的内存空间,没有自己独立的内存空间)

纤程:用户态的线程,线程中的线程,切换和调度不需要经过OS
优势:1:占有资源很少 OS : 线程1M Fiber:4K 2:切换比较简单 3:启动很多个10W+
目前2020 3 22支持内置纤程的语言:Kotlin Scala Go Python(lib)... Java? (open jdk : loom)

Java中对于纤程的支持:没有内置,盼望内置

可利用利用Quaser库(不成熟)实现纤程

纤程的应用场景

纤程 vs 线程池:很短的计算任务,不需要和内核打交道,并发量高!

僵尸进程和孤儿进程

一个子进程在父进程还没有调用wait()方法或者waitpid()方法的情况下退出,这个子进程就是僵尸进程;
一个父进程退出,它的一个或多个子进程还在运行,子进程将成为孤儿进程,孤儿进程将被init进程所收养;
僵尸进程将会导致资源浪费,而孤儿进程则不会。

进程调度

Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler)
按优先级分配时间片的比例,记录每个进程的执行时间,如果有一个进程执行时间不到他应该分配的比例,优先执行

默认调度策略:
实时 (急诊): 优先级分高低 - FIFO (First In First Out),优先级一样 - RR(Round Robin 轮询)
普通: CFS

中断

硬件跟操作系统内核打交道的一种机制
软中断(80中断) == 系统调用
系统调用:int 0x80 或者 sysenter原语
通过ax寄存器填入调用号
参数通过bx cx dx si di传入内核
返回值通过ax返回

java读网络 – jvm read() – c库read() - >
内核空间 -> system_call() (系统调用处理程序)
-> sys_read()

从汇编角度理解软中断

搭建汇编环境

yum install nasm

;hello.asm
;write(int fd, const void *buffer, size_t nbytes)
;fd 文件描述符 file descriptor - linux下一切皆文件
​
section data
    msg db "Hello", 0xA
    len equ $ - msg
​
section .text
global _start
_start:
​
    mov edx, len
    mov ecx, msg
    mov ebx, 1 ;文件描述符1 std_out
    mov eax, 4 ;write函数系统调用号 4
    int 0x80
​
    mov ebx, 0
    mov eax, 1 ;exit函数系统调用号
    int 0x80

编译:nasm -f elf hello.asm -o hello.o
链接:ld -m elf_i386 -o hello hello.o
一个程序的执行过程,要么处于用户态,要么处于内核态

相关文章

  • 程序员需要了解的计算机底层知识之进程、线程、纤程、中断

    程序员需要了解的计算机底层知识之进程、线程、纤程、中断 面试高频:进程和线程有什么区别?答案:普通:进程是程序运行...

  • Linux 基础之进程、线程、纤程和中断

    进程和线程 进程 是 OS 分配资源的基本单位。一个进程对应一个端口号, OS 会为每一个进程 独立分配一部分资源...

  • Python网络-多任务实现之协程!

    一、协程 协程,又称微线程,纤程。英文名Coroutine。 协程不是进程,也不是线程,它就是一个函数,一个特殊的...

  • python网络-多任务实现之协程

    一、协程 协程,又称微线程,纤程。英文名Coroutine。 协程不是进程,也不是线程,它就是一个函数,一个特殊的...

  • iOS 多线程-学习

    学习多线程之前有些知识我们要了解一二。比如说进程、线程的概念等。 进程: 进程是计算机中的程序关于某数据集合上的...

  • 进程、线程、协程、管程、纤程

    1.进程、线程、协程、管程、纤程概念对比理解 2.Redis 内存压缩实战 3.Log:被 BigData 遗忘的奠基者

  • Java并发编程之线程篇之线程间通信(四)

    前言 在上篇文章Java并发编程之线程篇之线程中断(三)中我们讲解了线程中断的相关知识点,现在我们来了解一下线程间...

  • iOS之多线程

    进程和线程 首先,在了解多线程之前要了解什么是进程,什么是线程 什么是进程呢?进程是指在系统中正在运行的一个应用程...

  • 2020-11-30面试

    c++多态(虚表)限流算法?排序(快排如何加快)红黑树进程线程(协程)进程切换如何实现硬中断/软中断?智能指针I/...

  • coroutine 纤程 -02

    大家对进程和线程都很熟悉,但是对于纤程(或是协程)感到陌生。其实协程在很早的时候就已经开始使用了。最开始使用进程,...

网友评论

      本文标题:程序员需要了解的计算机底层知识之进程、线程、纤程、中断

      本文链接:https://www.haomeiwen.com/subject/sytjgktx.html