海康笔试题

1. 

2. 

        

        块设备:磁盘设备驱动、SD设备驱动

         字符设备:终端设备驱动

         网络设备:网络设备驱动

(1)linux操作系统驱动程序分为三大类:字符设备驱动、快设备驱动和网络设备驱动

(2)字符设备驱动例子

         1. LED

         2. IIC

         3. SPI

         4. 音频设备

         5. LCD

(2)块设备驱动的例子(存储器设备的驱动)

         EMMC、NAND、SD卡、U盘

(3)网络设备驱动

         USB WIFI (USB接口为字符设备驱动、能上网也属于网络设备驱动)

3. 

        32位系统上,每个linux进程的虚拟地址空间通常位4GB,因为32位地址空间的最大寻址能力位2^32字节,即4294987296字节,约等于4GB

4. 

        若干等待CPU运行的进程按次序链接起来的队列称为就绪队列

        就绪队列

(1)定义

        就绪队列是操作系统调度程序维护的一个列表,其中包含所有已经准备好并等待被分配到CPU上运行的进程。每个进程在就绪队列中等待的时间称为等待时间

(2)特点

        1. 进程状态

        就绪队列中的进程处于就绪状态,它们已经具备了运行的所有条件,只等待CPU资源的分配

        2. 调度

        操作系统的调度程序从就绪对=队列中选择一个进程,将CPU分配给该进程进行执行

        调度算法决定了从就绪队列中选择哪个进程

        3. 实现形式

        通常以链表、队列实现

4. 

        linux中的虚拟地址到物理地址转换工作是由 (硬件地址转换单元)完成的    

        MMU

        在 Linux 中,虚拟地址到物理地址的转换是由 内存管理单元(MMU, Memory Management Unit) 完成的。MMU 是硬件的一部分,它负责将进程的虚拟内存地址翻译成实际的物理内存地址。操作系统内核(例如 Linux 内核)为每个进程维护了页表(Page Table),这些页表存储了虚拟地址到物理地址的映射关系。MMU 会根据页表的内容进行地址转换,当进程访问内存时,MMU 会将虚拟地址转换为相应的物理地址,并访问该物理内存位置

5. c语言关键字

int        float        double        long        short        char        void        union        enum     

while        do        if        else        switch        case        for        break    continue    default        goto

register        extern        static        volatile        

auto        return               sizeof        const        signed        unsigned   

struct        typedef       

6.    

7.       

  嵌入式ARM架构嵌入式处理器的特点

(1)具有大量的寄存器和指令执行速度快

        1. 丰富的寄存器集

        ARM架构通常通常有一个相对较大的通用寄存器集(16个32位寄存器),

        2. 精简指令集(RISC)架构

        ARM处理器采用精简指令集计算(RISC)架构,指令集较为简单且固定长度,这使得指令的解码和执行可以更加快速和高效

(2)寻址方式简单,常用固定长度的指令格式

        1. ARM架构采用了一组简单而有效的寻址模式,使得指令可以高效访问内存和寄存器,简化了编译器的设计,提高了指令的执行效率

        2. 大多数ARM指令都是固定长度的(通常32位),这有助于简化指令解码和流水线处理过程

(3)同时支持大小端数据格式

        ARM架构可以配置为大端(Big-endian)或小端(Little-endian)模式,这使得ARM处理器在不同的系统和应用环境中具有更大的灵活性

(4)绝大多数操作都在寄存器中进行通过LOAD/STORE的体系结构在内存和寄存器之间传递数据

8. IPv4地址的每个部分必须是0到255之间的整数,因此 192.168.1.256 是一个无效的IP地址

9. 

(1)基于UDP协议的网络应用协议

        1. DNS(域名系统)

        2. DHCP(动态主机配置协议)

        3. TFTP(简单文件传输协议)

        4. SNMP(简单网络管理协议)

        5. SIP(会话初始协议)

        6. Syslog(使用UDP端口514)

(2)基于TCP协议的网络应用协议

        1. HTTP(超文本传输协议)

        2. HTTPS(安全超文本传输协议)

        3. FTP(文件传输协议)

        4. SMTP(简单邮件传输协议)

        4. SSH(安全外壳)

(3)支持UDP和TCP的协议

        1. DNS

        2. SIP

        3. Syslog

10. 

(1)PID(Process ID)

        PID用于唯一标识一个进程,在操作系统中,每个运行中的进程都会被分配一个唯一的PID

通过PID,操作系统能够管理和调度进程,如创建进程、终止进程、监视进程状态等

(2)TID(Thread ID)

        TID用于唯一标识一个线程,在多线程环境中,一个进程可以包含多个线程,每个线程都有一个唯一的TID。TID用于操作系统管理和调度线程,如创建线程、终止线程、监视线程状态等

(3)在一个进程内部,每个线程有一个TID,TID在进程内唯一,但在整个系统中,可能会存在多个进程中的线程拥有相同的TID

11. 

、(1)管道(Pipe)

        管道是一种用于进程间通信(IPC)的机制。它允许一个进程将数据写入管道,另一个进程从管道读取数据。管道可以是无名管道或命名管道

        无名管道(Anonymous Pipe):用于有亲缘关系的进程之间通信(如父子进程)。在Unix和Linux系统中使用pipe()系统调用创建

        命名管道(Named Pipe):可以在无亲缘关系的进程之间通信。在Unix和Linux系统中使用mkfifo()创建,在Windows系统中使用CreateNamedPipe()创建

        管道通常用于数据流的传递,并且是半双工的(数据只能单向流动)。通过管道可以实现简单的进程间通信,但不用于同步        

(2)套接字(Socket)

      套接字是网络通信的端点,用于在不同计算机之间进行数据传输。它提供了一种双向通信机制,可以基于不同的协议,如TCP和UDP  

        套接字用于网络通信,但不用于同步

(3)信号量(进线程都能用)

        信号量是一种同步机制,用于控制对共享资源的访问

        1. 计数信号量:允许多个线程访问一定数量的资源

        2. 二元信号量:类似于互斥锁,只允许一个线程访问资源

        信号量可以防止竞争条件(race condition),确保在多个线程或进程间的正确同步

(4)临界区

        临界区指代码中需要独占访问共享资源的部分。在多线程编程中,使用同步机制(如互斥锁)来保护临界区,以防止多个进程同时访问导致数据不一致

(5)总结

        同步:信号量、临界区(通过互斥锁)

        非同步:管道、套接字

12. 

        在操作系统中,库、调度、进程管理、内存管理都是必不可少的

操作系统的组成

(1)内核

        1. 进程管理

        2. 内存管理

        3. 设备驱动程序

        4. 文件系统

        5. 安全与权限问题

(2)用户界面

(3)系统调用接口

        系统调用接口提供了一组系统调用(API),供应用程序调用以访问操作系统的服务。系统调用是用户程序与内核进行交互的主要方式,常见的系统调用包括进程控制、文件操作、设备操作、通信等

(4)驱动程序

        驱动程序是操作系统的一部分,负责控制和操作具体硬件设备。它们提供标准化接口,使操作系统和应用程序能够与硬件设备进行通信和控制  

(5)系统服务

(6)库和工具

        1. 标准库

        2. 系统工具

(7)设备管理

(8)文件系统

13. 

        RARP、ARP、IP属于网络层协议

        TCP/IP模型各层的常用协议

1. 应用层

  • HTTP(HyperText Transfer Protocol):用于万维网上传输网页数据。
  • HTTPS(HTTP Secure):HTTP的加密版本,使用TLS/SSL加密数据。
  • FTP(File Transfer Protocol):用于在网络上进行文件传输。
  • SMTP(Simple Mail Transfer Protocol):用于发送电子邮件。
  • DNS(Domain Name System):将域名解析为IP地址。
  • SSH(Secure Shell):用于安全登录和其他安全的网络服务。

2. 传输层

  • TCP(Transmission Control Protocol):提供可靠的、有序的、错误检查的数据传输。通过三次握手建立连接,适用于需要高可靠性的应用。
  • UDP(User Datagram Protocol):提供无连接、不可靠的数据传输,速度快但不保证数据顺序和完整性,适用于对传输速度要求高但不要求可靠性的应用(如视频流、在线游戏)。

3. 网络层

  • IP(Internet Protocol):核心协议,负责地址分配和数据包路由。包括IPv4和IPv6两个版本。
  • ICMP(Internet Control Message Protocol):用于网络诊断和错误报告,如ping命令。
  • ARP(Address Resolution Protocol):将IP地址解析为物理MAC地址。
  • RARP(Reverse Address Resolution Protocol):将物理MAC地址解析为IP地址。
  • OSPF(Open Shortest Path First):一种内部网关协议,用于在自治系统内进行路由选择。
  • BGP(Border Gateway Protocol):一种外部网关协议,用于在不同自治系统之间进行路由选择。

4. 链路层

  • Ethernet(以太网):最广泛使用的局域网技术,定义了电缆类型、传输速度和数据帧格式。
  • PPP(Point-to-Point Protocol):用于通过串行连接(如电话线)传输数据。
  • HDLC(High-Level Data Link Control):用于点对点和点对多点通信中的数据链路层控制。
  • Wi-Fi(IEEE 802.11):无线局域网标准,定义了无线信号传输的方式和数据帧格式。
  • Token Ring:一种局域网技术,数据帧通过一个逻辑环传输。

14. 

        本题中memcpy定义有误,再就是copy_from_kernel传参缺失,以下是修改版本

void *memcpy(void *dest, const void *src, size_t n);
#define KSZIE 10244
char kbuf[KSZIE];int copy_from_kernel(void *user_dest, const void *kernel_src, int maxlen)
{int len = 0;(char *)user_dest = kbuf;len = KSZIE < maxlen ? KSZIE : maxlen;memcpy(user_dest, kernel_src, len);return len;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/390709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试--DHCP饿死实验

实验拓扑 实验步骤 Router Router(config)#int f0/0 Router(config-if)#ip address 192.168.100.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exitRouter(config)#ip dhcp pool NAME Router(dhcp-config)#network 192.168.100.0 255.255.255.0 Route…

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的. 我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核. 这个时候想起了…

脚拉脚模型笔记

脚拉脚模型 ⌈♪⌋例题&#xff1a; 辅助线&#xff08;中点&#xff09;做法&#xff1a; 倍长中线Rt △ △ △ 斜边中线等腰 △ △ △ 三线合一中位线 需要&#xff1a;两个等腰三角形&#xff0c;顶角互补 共__底点__ 底角需要连接 解&#xff1a; ∵ D Q 1 / 2 A B O…

【Qt】QDial和QSlider

QDial QDial类用于创建一个旋转式的圆形控件&#xff0c;通过鼠标点击旋转、方向键或者pageUp和pageDown调整一个值。常用在需要进行连续调整的场景&#xff0c;比如音量控制、亮度控制、透明度调节等 常见属性 属性说明value持有的值minimum持有值所能到达的最小值maximum持有…

【C语言】C语言期末突击/考研--函数

目录 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 1.2.函数的分类与调用 二、函数的递归调用 三、局部变量与全局变量 3.1.全局变量解析形参实参解析 3.2.局部变量与全局变量 四、练习题及解析 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 函数间的…

操作系统原理:程序、进程、线程的概念

文章目录 程序、进程、线程的概念程序&#xff08;Program&#xff09;进程&#xff08;Process&#xff09;线程&#xff08;Thread&#xff09;关系总结 在日常对操作系统的使用中&#xff0c;大家肯定对程序、进程和线程多少有所耳闻。作为操作系统的重要一部分&#xff0c;…

R 语言学习教程,从入门到精通,R的安装与环境的配置(3)

1、R 基础语法 一门新的语言学习一般是从输出 “Hello, World!” 程序开始&#xff0c;R 语言的 “Hello, World!” 程序代码如下&#xff1a; myString <- "Hello, World!" print ( myString )以上示例将字符串 “Hello, World!” 赋值给 myString 变量&#x…

# mongodb_基础到进阶 -- MongoDB 高级--MongoDB 集群部署与安全性(四)

mongodb_基础到进阶 – MongoDB 高级–MongoDB 集群部署与安全性&#xff08;四&#xff09; 一、mongodb 第一个路由节点创建 1、分片集群架构目标 两个分片节点副本集&#xff08;33&#xff09;一个配置节点副本集&#xff08;3&#xff09;两个路由节点&#xff08;2&am…

day17 Java流程控制——用户交互Scanner

day17 Java流程控制——用户交互Scanner 目录 day17 Java流程控制——用户交互Scanner1. 什么是Scanner对象&#xff1f;2. 实操 1. 什么是Scanner对象&#xff1f; Scanner对象是Java编程语言中的一个类&#xff0c;存在于java.util包中。它用于获取输入&#xff0c;可以是各…

【letcode-c++】242有效的字母异位词与49字母异位词分组

一、242 有效的字母异位词 &#xff08;1&#xff09;题目 &#xff08;2&#xff09;知识点–哈希 【这一段总结来自于代码随想录的讲解学透哈希表 哈希的优势是可以实现快速查找&#xff0c;它非常适合应用与查找某一个元素是否在一个集合中出现。 哈希有三种实现形式&…

C++篇:入门(2)

引用 引用的概念以及定义&#xff1a; 在C中&#xff0c;引用&#xff08;Reference&#xff09;是一个非常重要的概念又可以称之为取别名&#xff0c;它允许我们创建一个已存在对象的别名。引用提供了一种机制&#xff0c;通过它可以直接访问另一个变量、对象或函数的值&#…

【Python 逆向滑块】(实战五)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期&#xff1a;2024.08.03 使用工具&#xff1a;Python&#xff0c;Node.js 本章知识&#xff1a;滑块距离识别&#xff0c;滑块轨迹生成&#xff0c;验证滑块并获取【validate】参数 文章难度&#xff1a;中等&#xff08;没耐心的请离开&#xff09; 文章全程已做去敏处…

【时时三省】(C语言基础)函数递归练习

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 求字符串长度 求的是arr里面字符串的长度 abc后面还有一个\0为结束标志 在结算字符串长度的时候不算\0 所以它的长度是3 模拟实现一个strlen函数 str等于\0的时候就会结束返回count 如果…

一款简单且强大的免费开源图片压缩软件

图压是一款简单易用且功能强大的图片压缩工具&#xff0c;适用于Windows和macOS两大操作系统。它能够在几乎不损害图片清晰度的情况下&#xff0c;显著减小图片的体积&#xff0c;特别适合需要在网页、PPT、Word、PDF中使用的图片压缩。图压的操作界面简洁&#xff0c;用户可以…

2024智慧农场土地租赁家禽认养众筹实时监控商品溯源农业积分商城秒杀助农小程序源码

后端&#xff1a;系统后端使用PHP语言开发 前端&#xff1a;前端使用uniapp进行前后端分离开发 功能简介&#xff1a;土地种植、农业认养、积分商城、农场活动、视频监控、农场商城、实时数据监控、限时秒杀、农业众筹、送货上门、一键分销、农场入驻、全部店铺 运行环境&am…

PyMongo

什么是PyMongo PyMongo 是一个 Python 库&#xff0c;用于与 MongoDB 数据库进行交互。MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;提供高性能、可扩展性和灵活的架构。PyMongo 提供了一套工具&#xff0c;使得在 Python 程序中操作 MongoDB 变得简单和高效。 安装PyMo…

SpringBoot配置文件高级用法实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

u盘数据丢失怎么办?以下这四招教你轻松找回!

重要的文件资料要是不小心手滑删除了&#xff0c;轻则遭受领导的责骂&#xff0c;重则就是直接受到老板的警告了&#xff0c;所以打工人应该要人手必备数据找回的技巧&#xff0c;尤其是在针对已经拷贝好了数据在u盘当中时&#xff0c;更是需要快速去找到数据恢复的技巧&#x…

ARM 架构与技术综述

目录 认识 ARM ARM 发展历史 指令集 ARM 公司产品分类 ARM 体系结构 数据类型约定 处理器的 32 位和 64 位含义 指令集 ARM 处理器的工作模式 CPU (内核) 组成 寄存器 时钟 认识 ARM ARM 可以指&#xff1a; 一家公司。一种技术。一系列处理器。 架构&#xff1a;A…

Python数据结构实战:列表、字典与集合的高效使用

前言 在编程中&#xff0c;选择合适的数据结构对于提高程序效率至关重要。本文将介绍Python中最常用的数据结构——列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;和集合&#xff08;set&#xff09;&#xff0c;并探讨它们的内部实现以及如何高效地使用…