首页 > 系统相关 >Linux内核的知识点

Linux内核的知识点

时间:2024-02-27 09:57:20浏览次数:24  
标签:知识点 中断 IRQ Linux 调度 内核 寄存器 irq CPSR

1、发生硬件中断后,ARM处理器做了哪些事情?

  答:当CPU感知到中断发生后,硬件会自动做如下一些事情:

    1)保存中断发生时CPSR寄存器的内容到SPSR_irq寄存器中;

    2)修改CPSR寄存器,让CPU进入处理器模式(processor mode)中的IRQ模式,即CPSR寄存器中的M域设置为IRQ Mode。

    3)硬件自动关闭IRQ或FIQ,即CPSR中的IRQ位或FIQ位置1。

    4)保存返回地址到LR_irq寄存器中。

    5)硬件自动跳转到中断向量表的IRQ向量中。

    当从中断返回时需要软件实现如下两个操作:

    1)从SPSR_irq寄存器中恢复数据到CPSR中。

    2)从LR_irq中恢复内容到PC中,从而返回到中断点的下一个指令处执行。

  上述是ARM处理器检测到IRQ中断后自动做的事情,软件需要做的事情从中断向量表开始。

2、Linux内核调度的时机有哪些?

  答:Kernel 判断当前进程标记是否为 TIF_NEED_RESCHED,是的话调用 schedule 函数,执行调度,切换上下文,这也是上面抢占(preempt)机制的本质。那么在哪些情况下会执行 schedule 呢?

    __schedule()函数是调度器的核心函数,其作用是让调度器选择和切换到一个合适进程运行。调度的时机可以分为以下3种:

    1)阻塞操作:互斥量,信号量,等待队列(waitqueue)等;

    2)用户态抢占:在中断返回前和系统调用返回用户空间时,去检查TIF_NEED_RESCHED标志位以判断是否需要调度;ret_to_user 是异常触发,系统调用,中断处理完成后都会调用的函数。

    3)将要被唤醒的进程

    4)主动调用schedule函数

 

3、那么,什么时候设置TIF_NEED_RESCHED呢 ?

  答:1)scheduler_tick 时钟中断;

    2)wake_up_process 唤醒进程的时候;

    3)do_fork 创建新进程的时候

    4)set_user_nice 修改进程nice值的时候

    5)smp_send_reschedule 负载均衡的时候

标签:知识点,中断,IRQ,Linux,调度,内核,寄存器,irq,CPSR
From: https://www.cnblogs.com/penglcool/p/18036228

相关文章

  • VMware Linux虚拟机无网络的解决方案 --- 不显示网卡
    我的VMwareUbuntu虚拟机挂起休眠后,再次唤醒后会出现连不上网、显示不了网卡的问题。我认为这可能是系统问题。针对这一种问题的解决方案如下:1、将虚拟机网络适配器改为主机模式;2、在Ubuntu指令窗口中依次输入以下指令:sudoservicenetwork-managerstopsudorm/var/lib/Ne......
  • Linux学习-day4
    1.简述操作系统是什么?操作系统就是人与计算机之前交互的介质,有了操作系统,人才能使用计算机;同时,操作系统也是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。有什么作用?管理和控制计算机系统中的硬件和软件资源,例如,它负责直接管理计算机系统的各种......
  • linux练手小项目:探测系统信息
    看了b站上的一个教学视频,复习了一下拿取linux系统信息的方法,并跟着up写了一个小的脚本完成一系列需求。写一篇博文记录一下这个过程,以后回顾用。课程地址:https://www.bilibili.com/video/BV1L7421T7mc课程课件:https://gitee.com/coldbloodx/lsbs需求显示当前运行的操作系......
  • I recommend a very small Linux, it is Watt OS version 13
    Dearall,MyfirsttimeusingLinuxWattOSversion12,itisverynice. Superfast!However,fornewusers,youneedthesecommandtostart:sudopasswdsudodate--setmm/dd/yyyysudoaptinstallgdebiItisworthytostudythesecommandline,because......
  • linux空磁盘挂载到指定目录操作步骤
    linux磁盘挂载1、检查硬盘分区情况:fdisk-l 或 lsblk如图所示:/dev/sdb磁盘还未分区2、给新硬盘添加分区执行fdisk/dev/sdb按照下面步骤依次输入指令3、格式化分区类型mkfs.xfs/dev/sdb14、查看格式化后的所有文件系统类型blkid5、将新建分区挂载到指定目录m......
  • linux下.gz文件的解压与压缩
    Usage:gzip[OPTION]...[FILE]...CompressoruncompressFILEs(bydefault,compressFILESin-place).Mandatoryargumentstolongoptionsaremandatoryforshortoptionstoo.-c,--stdoutwriteonstandardoutput,keeporiginalfilesunchanged#在标准输出......
  • Linux下修改挂载点的操作方法(linux修改挂载点)
    Linux下修改挂载点的操作方法 Linux是一款多用途操作系统,具备很强的功能。很多时候,我们需要修改Linux下的挂载点,以便让挂载点更加合理、方便文件访问等。下面就介绍在Linux下修改挂载点的操作方法。 首先,我们需要获取已经挂载的设备名称,可以通过以下指令来实现: df-h //......
  • mitmproxy 抓包神器-6.如何在linux操作系统中安装
    前言常见的抓包工具有fiddler和charles,这些工具都是需要安装本地客户端,python版的抓包工具可以用mitmproxy。mitmproxy相比Charles、fiddler的优点在于,它可以命令行方式或脚本的方式启动服务,跨平台使用。Linux环境安装mitmproxy(man-in-the-middleattackproxy),中间人......
  • FTP服务搭建(linux)(转载)
    一、下载(在线安装可跳过)1、下载(见网盘)下载服务端vsftpd:下载地址下载客户端ftp注:如果需要使用ftp命令,则客户端必须安装,否则无法使用(-bash:ftp:commandnotfound)二、安装1、检查是否已经安装了vsftp首先查看系统中是否成功安装了vsftpd,执行下面命令(有内容则安装了ftp)rpm......
  • linux使用except和子进程交互
    #!/bin/bash#set-x#FTP服务器信息FTP_HOST="ftp.deepvision-tech.com"FTP_USERNAME="huangbinbin"FTP_PASSWORD="xxxxx."#远程目录和文件REMOTE_DIRECTORY=$1LOCAL_FILE=$2ftp_command="ftp-n$FTP_HOST"check_directory="......