精华内容
下载资源
问答
  • 原文地址:https://blog.csdn.net/morixinguan/article/details/50775417...而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围活动。举例:intel x86 CPU有四种不同的执行级别0...

    原文地址:https://blog.csdn.net/morixinguan/article/details/50775417

    一般现代CPU都有几种不同的指令执行级别。

    在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态。

    而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动。

    举例:

    intel x86 CPU有四种不同的执行级别0-3,linux只使用了其中的0级和3级分别来表示内核态和用户态。

       

            我想说,对于这个知识我问过我们学校的大牛廖建文老师有关进程问题fork的时候,他跟我说过内核0级环的概念,其实也就是处于内核态。大笑大笑用上面这幅图可以表示出来。

    如何区分用户态和内核态?

    CS寄存器的最低两位表明了当前代码的特权级。

    CPU每条指令的读取都是通过CS:eip这两个寄存器:

    其中cs是代码段选择寄存器,eip是偏移量寄存器。

    上述判断由硬件完成。

    一般来说在linux中,地址空间是一个显著的标志:0xc0000000以上的地址空间只能在内核态下访问,

    0x00000000-0xbfffffff的地址空间在两种状态下都可以访问。

    注意:这里所说的地址空间是逻辑地址而不是物理地址。


    其实孟宁老师在讲解内核知识点已经把这个知识点最精华的部分提取出来了,那么到底内核中有什么样的接口是跟老师说的相关的呢?

    其实写过linux内核驱动程序的同学应该就知道,实现一个字符设备驱动,在write方法和read方法中,内核态和用户态之间的桥梁就是copy_to_user和copy_form_user这两个接口,因为孟老师说了在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态,而在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动。其实正好说明了这个问题,程序员或者软件应用工程师在编写应用程序去控制设备驱动的时候,首先肯定是会打开相应的文件描述符,然后对相应的文件描述符进行读写,ioctl,lseek之类的操作。当在应用层编写程序即是属于用户态,在应用程序不能访问任意的硬件物理地址,所以当用户需要读取文件描述符的内的内容时,就需要调用read,当用户需要写数据进文件描述符时,就需要用write,在用户态调用这两个接口,进而就会进行系统调用,产生相应的系统调用号,然后内核会根据系统调用号找到相应的驱动程序,此时系统就处在内核态中,在驱动程序中,首先进行驱动程序初始化,然后注册,产生驱动程序最重要主设备号和次设备号。初始化的过程中由于对相应的read方法和wirte方法进行初始化,故用户态执行read操作,就会进而使CPU产生异常,然后进入内核态找到相应的read,write当然也是一样的。

    就如同下面这张图:


    当然,我的分析依然还是处于非常片面的,只能说个大概,因为操作系统在执行系统调用的过程依然是非常复杂的,但是复杂归复杂,对于这样的一个流程我们还是应当要去了解清楚。

    还有一个例子就是,假设我需要实现一个led驱动或者其它的驱动,在内核驱动中,我需要将相应的物理地址ioremap成为一个虚拟地址,当驱动调用结束后,还应当取消相应的地址映射,这其实就是在内核态进行的操作,因为在内核中,访问这些地址以虚拟地址的形式进行相应的内存分配。为了使软件访问I/O内存,必须为设备分配虚拟地址.这就是ioremap的工作。

      还有一个例子就是在用户态进行mmap操作。Linux中的内核空间到用户空间的地址映射让用户层应用可以直接访问内核地址,这就是mmap方法。

      关于这方面的知识,本人也是非常感兴趣,当然完成的对这个过程进行剖析,还需要剖析进程的创建,然后进程的调度一系列的问题,还有一个离不开的内存管理,有了内存管理那就一定存在MMU,一定需要页表的映射等等。往后若有总结,我会将知识点分享出来!大笑

    展开全文
  • 它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集中式管理: * [. Y& e' Q6 @,...
  • 172.如何获取光标当前的活动范围 173.如何获取系统默认的图标大小 174.如何获取可执行文件中的图标 175.如何提取动态链接库中的图标 176.如何提取图标文件中的图标 177.如何以发送消息方式设置图标 178.如何使程序...
  • 如何获取光标当前的活动范围  173.如何获取系统默认的图标大小  174.如何获取可执行文件中的图标  175.如何提取动态链接库中的图标  176.如何提取图标文件中的图标  177.如何以发送消息方式设置...
  • 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 ...
  • 驱动开发基础 -- 用户态、内核态

    千次阅读 2018-04-11 10:57:11
    而在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围活动。   举例:intel x86 CPU有四种不同的执行级别0-3,linux只使用了其中的0级和3级分别来表示内核态和用户态。 2.如何

    1.什么是用户态,什么是内核态?
       一般现代CPU都有几种不同的指令执行级别。在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态;而在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动。
      举例:intel x86 CPU有四种不同的执行级别0-3,linux只使用了其中的0级和3级分别来表示内核态和用户态。
    这里写图片描述

    2.如何区分用户态和内核态?
      CS寄存器的最低两位表明了当前代码的特权级。linux只使用了其中的0级和3级分别来表示内核态和用户态。
      一般来说在linux中,地址空间是一个显著的标志:0xc0000000以上的地址空间只能在内核态下访问,0x00000000-0xbfffffff的地址空间在两种状态下都可以访问。(注意:这里所说的地址空间是逻辑地址而不是物理地址。

    3.用户态如何切换到内核态?
      用户态切换到内核态分两种:主动式和被动式
      被动式:就是Linux在用户态(ARM在用户模式)工作,没有主动发起请求、而被动地进入内核态;包括硬件中断程序异常
      主动式:就是Linux在用户态(ARM在用户模式)工作,通过发起用户态程序发起命令请求、ARM响应进入特权模式进而Linux切入内核态;就是系统调用

    4.用户态->系统调用->软中断->系统调用中断服务程序(传入系统调用号)->对应驱动程序。

    展开全文
  • 第四周 扒开系统调用的“三层皮” 一、内核、用户态和中断 ...②在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围活动。 为什么会有权限级别的划分? 答:当所有...

    第四周 扒开系统调用的“三层皮”

    一、内核、用户态和中断

    (一)如何区分用户态、内核态

    1.一般现在的CPU有几种不同的指令执行级别

    ①在高级别的状态下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态,可以执行所有指令。

    ②在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动。

    为什么会有权限级别的划分?

    答:当所有程序员写的代码都有特权指令时,系统很容易崩溃,没有访问权限划分容易使得系统混乱。

    ③Intel x86 CPU有四种不同的执行级别0—3,Linux只使用了其中的0级和3级来表示内核态和用户态。

    2.如何区分用户态、内核态

    CPU每条指令的读取都是通过cs:eip(代码段选择寄存器:偏移量寄存器)这两个寄存器,由硬件完成判断。

    • 内核态时,cs与eip的值可以访问任意地址
    • 用户态时,cs与eip只可以访问0x00000000—0xbfffffff的地址空间

      P.S.这里的地址空间指逻辑地址而非物理地址

    (二)中断处理

    中断处理是用户态进入内核态主要的方式,系统调用只是一种特殊的中断

    ①硬件中断,中断服务进程

    ②用户态执行系统调用,进入内核态

     

    注意:从用户态切换到内核态时

    必须保存用户态的寄存器上下文

    中断指令会把内核态相应的寄存器值放在当前CPU中

    中断/int指令会在堆栈上保存一些寄存器的值(eg:用户态栈顶地址(ss:esp),标志寄存器(eflags),cs:eip(为了返回的时候popl弹出保存的返回地址)。同时,将相关联的中端服务历程的入口加载到cs:eip,把当前的堆栈段esp也加载到CPU里面)

    系统调用需要int触发,int 80要模拟中断,由硬件来处理,80号中断即为系统调用

    中断发生后第一件事就是保存现场,进入中断处理程序,保存需要用到的push到寄存器的值。

    中断处理结束前最后一件事是恢复现场,就是退出中断程序,恢复用户态的保存寄存器的数据

    iret对应着中断信号恢复指令。

     

    二、系统调用概述

    系统调用

    • 是内核提供的最基本、最重要的服务设施
    • 所有内核服务都通过系统调用的形式提供

    (一)系统调用的意义

    操作系统为用户态进程与硬件设备进行交互提供了一组接口——系统调用。

    ①把用户从底层的硬件编程中解放出来

    ②极大的提高了系统的安全

    ③使用户程序具有可移植性

    (系统调用减少了系统与硬件之间的耦合,所以极大提高了系统可移植性)

    (二)操作系统提供的API和系统调用的关系

    ①应用编程接口(API)和系统调用是不同的,使用API是为了让用户从底层硬件编程中解放出来。

    • API只是一个被封装好的函数定义
    • 系统调用通过软中断向内核发出一个明确的请求

    ②Libc库定义的一些API引用了封装例程(wrapper routine,唯一目的就是发布系统调用)使程序员在写代码时不用以汇编指令触发系统调用而是直接调用函数。

    • 一般每个系统调用对应一个封装例程
    • 库再用这些封装例程定义出给用户的API

    ③不是每个API都对应一个特定的系统调用

    • API可能直接提供用户态的服务
      • 例如一些数学函数没有用到系统调用
    • API与系统调用不是单一的一对一的关系

    ④返回值

    • 大部分封装例程返回一个整数,其值的含义依赖于相应的系统调用
    • 返回值-1在多数情况下表示内核不能满足进程的请求
    • Libc中定义的errno变量包含特定的出错码

    (三)系统调用的三层皮

     

    一层皮:API

    二层皮:中断向量对应的中断服务程序

    三层皮:系统调用对应的很多不同种类的服务程序

     

    详细过程:

    用户态进程中,xyz()函数是系统调用对应的API,该编程接口里封装了一个系统调用,会触发一个int 0x80的中断,产生向量为128的编程异常。该中断对应着内核态的内核代码入口起点system_call,执行SAVE_ALL,执行到中断服务程序sys_xyz()时,进入程序处理,该中断服务程序执行完后,会ret_from_sys_call,在ret中可能会发生进程调度,如果没发生就会iret,返回用户态,继续执行。

    (四)传参

    ①内核实现了很多不同的系统调用,

    ②进程必须指明需要哪个系统调用,这需要传递一个名为系统调用号的参数,使用eax寄存器

    ③系统调用还需要参数

    做函数调用时,可以采用参数压栈的方式来传递。

    从用户态到内核态如何传递参数呢?

    system_call是linux中所有系统调用的入口点,每个系统调用至少有一个参数,即由eax传递的系统调用号。具体过程如下:1.一个应用程序调用fork()封装例程,那么在执行int $0x80之前就把eax寄存器的值置为2(即__NR_fork)。

    2.这个寄存器的设置是libc库中的封装例程进行的,因此用户一般不关心系统调用号 3.进入sys_call之后,立即将eax的值压入内核堆栈


    超过6个,就将某一个寄存器作为指针,指向内存,进入内核态后可以访问所有地址空间,即通过内存传递数据

    三、使用库函数API来获取系统当前时间

    (一)使用库函数API获取当前系统时间

    
    

    编译:gcc time.c -o time

    结果:打印出的就是系统时间下的 年:月:日:时:分:秒

    (二)C代码中嵌入汇编代码的写法

    __asm__(
    汇编语句模板:
    输入部分:
    输出部分:
    破坏描述部分:);


    这里,汇编代码相当于一个函数。


    include <stdio.h>
    int main()
    {
    /*想要实现的功能:val1+val2=val3*/
    unsigned int val1 = 1;
    unsigned int val2 = 2;
    unsigned int val3 = 0;
    printf("val1:%d,val2:%d,val3:%d\n",val1,val2,val3);

    asm volatile(
    "movl $0,%%eax\n\t" /*%%表示转义字符,把0赋给eax,即把%eax清零*/
    "addl %1,%%eax\n\t" /*%1指输出和输入的部分,用ecx寄存器存储val1的值*/

    "addl %2,%%eax\n\t" /*把val1+val2放入eax*/

    "movl %%eax,%0\n\t" /*把val1+val2的值存储在eax里面*/
    : "=m" (val3) /* =表示把val3的值写到内存变量里面*/
    : "c" (val1),"d" (val2) /*用%ecx存储val1,用%edx存储val2*/
    );

    printf("val1:%d+val2:%d=val3:%d\n",val1,val2,val3);
    return 0;
    }

    内嵌汇编常用修饰符

     

    嵌入式汇编中每一个输出或输入的前面都可以添加一个限定符

    (三)用汇编方式触发系统调用获取系统当前时间

    #include <stdio.h>
    #include <time.h>
    int main()
    {
        time_t tt;//int型数值
        struct tm *t;
        asm volatile(
            "mov $0,%%ebx\n\t"//ebx清0
            "mov $0xd,%%eax\n\t"//把0xd放入eax中,eax传递系统调用号13(13的16进制即为d)
            "int $0x80\n\t"//中断
            "mov %%eax,%0\n\t"//返回值通过eax这个寄存器返回,eax——%0放入tt中
            :"=m"(tt)
        );
        t = localtime(&tt);
        printf("time:%d:%d:%d:%d:%d:%d:\n",t->tm_year+1900,t->tm_mon,t->tm_mda,t->tm_hour,t->tm_min,t->tm_sec);
        return 0;
    }

    这段代码让我们更清楚的知道用户态向内核态

    • 传递了系统调用号
    • 传递了参数null向ebx

    四、实验——使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    实验要求:

    1. 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl

    2. 参考视频中的方式使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用,

    本次实验我选择了24号和47号系统调用,分别获取当前用户uid(用户ID)和gid(组ID)。

    1、uidgid.c(使用库函数API方式):

    代码:

    该代码通过调用getuid()和getgid()函数来获取当前执行用户uid和gid
     

    实验结果:

     
    2、uidgid_asm.c(使用C代码中嵌入汇编代码方式):

    代码:

    嵌入汇编代码版本中将原来两行通过API函数获取uid和gid的代码注释掉,用汇编代码替换。

    首先将ebx寄存器清零,表示无参数传入。

    然后分别将0x18和0x2f(十进制24和47)赋值给eax寄存器,表示需要调用的系统调用号,24为getuid,47为getgid。

    执行int 0x80来执行系统调用。

    之后eax寄存器保存了返回值,将它分别赋值给输出uid或gid变量。

    完成整个汇编代码的系统调用。

     

    实验结果:

     

    五、总结——系统调用的工作机制

    首先在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这时CPU执行级别就对应着内核态。在相应的低级别执行状态下,代码的掌控范围会受到限制。只能在对应级别允许的范围内活动,即为用户态。Linux使用了其中的0级和3级分别来表示内核态和用户态。

    用户态:只能访问0x00000000-0xbfffffff的地址空间
    内核态:可以访问0xc0000000以上的地址空间

    中断处理是从用户态进入内核态主要的方式。当用户态进程调用一个系统调用时,CPU切换到内核态并开始执行一个内核函数,Linux通过执行int $0x80来执行系统调用的,这条汇编指令产生向量为128的编程异常。进程需要指明哪个系统调用,就需要eax寄存器传递一个系统调用号参数。
    system_call是linux中所有系统调用的入口点,每个系统调用至少有一个参数,即由eax传递的系统调用号,进入sys_call之后,立即将eax的值压入内核堆栈。然后执行正确的系统调用函数并把返回值带回用户态。系统调用是用户访问内核的唯一手段,内核只管执行封装好的指令并输出结果,用户只需应用API得出相应的结果而无需理会内核执行了哪些指令。

    转载于:https://www.cnblogs.com/bonjourvivi/p/5285307.html

    展开全文
  • 第一部分 界面设计

    2013-10-22 23:10:34
    实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 ...
  • 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 ...
  • 实例084 如何限制鼠标活动范围 实例085 如何读取键盘信息 第三部分 文件操作 实例086 如何复制文件 实例087 如何定制文件复制操作 实例088 如何更名文件 实例089 如何更改文件扩展名 实例090 如何删除文件 ...
  • Visual C++编程技巧精选500例.pdf

    热门讨论 2012-09-01 15:01:50
    022 如何限制编辑控件输入的字符类型? 023 如何显示载有RichEdit控件的对话框? 024 如何在列表框中自动装载磁盘文件列表? 025 如何使1istContro1控件支持整栏选择? 026 如何使用PictureBox控件浏览多种格式的图像? ...
  • BPMN: (第4部分 - 子进程)

    千次阅读 2019-01-24 09:14:44
    子进程表示多个活动, 这些活动一起执行整个进程的一部分。 在 bpmn 中,子进程可以具有展开或折叠表示形式。在扩展的子进程中, 其所有详细信息都显示在其限制范围内。 图 7. 扩大的分进程 在折叠的子流程(更常用...

    在本课中, 您将看到子流程元素如何在业务流程建模中使用。子进程表示多个活动, 这些活动一起执行整个进程的一部分。

    在 bpmn 中,子进程可以具有展开或折叠表示形式。在扩展的子进程中, 其所有详细信息都显示在其限制范围内。

    Sub-process

    图 7. 扩大的分进程

    在折叠的子流程(更常用) 中, 详细信息在流程关系图中不可见, 从而使业务流程的可视化变得容易得多。从图形上看, 它表示为任务(带圆角的矩形), 并在较低的中心有一个小的加号。

    Sub-process element

    图8。折叠子进程的图形表示

    在流程图中, 子流程通常用于以下两种情况:

    1. 分解 (分解) 关系图并使其更具可读性;
    2. 描述重复的活动。

    让我们看看子流程是如何用于流程分解的。

    任何流程图都表示一系列活动。当一个进程有大量的活动时, 最好将其分解为子进程。然后,子进程将形成关系图的顶层, 显示进程的核心。此方法允许您制作逻辑和可读的关系图, 而无需过多的详细信息。

    下面是这样一个顶级流程 “员工招聘” 的示例。它的顶层看起来如下, 任何人都很容易理解:

    Top-level business process

    图9。员工招聘顶级业务流程

    在描述每个子流程时, 您包括所有必要的详细信息: bpmn元素、执行器和条件。您可以说子流程是主业务流程中的一项复杂任务, 尽管在bpmn中, 它实际上不是一个单独的任务, 而是对另一个流程的一种引用。

    当业务流程分解为子流程时, 您可以轻松地对其进行更改, 而无需修改整个流程, 只需在相应的子流程中引入更改即可。

    员工招聘流程细分为以下三个流程:

    1. 寻找新员工。
    2. 完成文书工作。
    3. 培训新员工。

    让我们来看看由子流程表示的每个活动。

    Business process

    图 10. “寻找新员工” 子流程

    Business process

    图 11. “完成文书工作” 子进程

    Business process

    图 12. “培训新员工” 子流程

    现在想象一下, 如果所有这些活动和执行器都显示在一个图表中。建模会很困难, 更不用说看这样的图表了。通过将复杂的业务流程分解为子流程, 您可以获得一个流程, 这对任何业务用户来说都是可以理解的, 将来可以很容易地进行修改或增强。

    现在, 让我们看看子进程是如何用来描述重复活动的。

    有不同的子流程类型;其中之一是可重用的类型可重用的子流程可以在多个业务流程中多次使用。它标识流程中使用预定义流程的点。

    子进程必须仅由其所有者修改和更新, 这将提供及时和准确的更新, 并将出错的可能性降至最低。当将更改引入可重用的子流程时, 也不需要修改使用它的主要业务流程。更改只在一个子流程中引入一次!

    看看下面的示例, “客户通知” 可重用子流程在两个主要流程的上下文中使用: “新产品发布” 和 “分支机构打开”。

    Reusable sub-process

    图15。可重复使用的子进程

    如果必须向流程中添加新的信息渠道或广告工具, 则仅将其添加到 "客户通知"子流程的关系图中。不修改这两个主要进程。

    正如我们之前所说, bpmn包括几个子流程类型。我们刚刚回顾了其中的一个, 可重用的子过程

    以下是一些不太常见的子流程类型:

    • 事件子流程
    • 交易
    • 特设分程序

    偶数子进程子进程的一种特殊类型。它是由事件触发的, 与由序列流触发的常规子进程不同。事件子进程显示为一个圆角矩形, 其中包含一个以薄虚线为边框的圆线。

    Event sub-process

    图16。事件子进程 (折叠)

    事务是一个子进程, 其行为通过事务协议进行控制。事务的图形表示形式是一个圆角矩形, 其中有一条标记其边框的双线。

    Transaction sub-process

    图 17. 事务子进程 (折叠)

    特设子进程是一组没有所需序列关系的活动, 可能以任何顺序发生。执行活动的顺序和次数由执行者决定。
    ad-ac 子进程的图形元素在子进程矩形形状的较低中心包含一个标记, 即倾斜 (~)。

    Ad-Hoc Sub-Process

    图18。特设分程序

    您可以在bpmn 规范中阅读有关各种子流程类型及其在业务流程建模中的应用的更多信息。


     通过示例学习

    此BPD示例说明了使用电子邮件和电话会议的讨论过程。它显示了以下BPM元素:活动,计时器,决策,启动事件,结束事件,注释,数据关联,序列流和数据,以及并行网关。

    以此为起点绘制BPMN图。只需单击“ 使用此模板进行编辑,或单击“ 创建空白以从头开始绘制。

    讨论å审核è¿ç¨


    bpmn 工具

    具有强大Visual Paradigm BPMN软件的业务流程设计 - 使用专业的BPMN工具传达业务流程创意。


    展开全文
  • Android应用程序可以非常自由地分发,没有太多限制:您可以在网站上下载它,甚至可以直接通过电子邮件将应用程序发送给用户,但许多开发人员选择在谷歌等市场上发布应用程序或亚马逊最大化范围。无论您打算如何分发...
  • CMMI_1[1].2简体中文版

    2010-03-28 11:58:02
    资源的使用) 过程的活动、工作产品及服务间的相依性 执行过程所需的资源,包含资金、人力及工具 责任与授权的指派 执行与支持过程所需的培训 控制的工作产品及其纳管的层级 度量需求以深入了解过程、工作产品,以及...
  • 范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对...
  • 14.8 活动事务 399 14.9 使用保存点 400 14.10 序列化事务 403 14.11 隔离事务 406 14.12 自治事务 409 14.13 小结 413 第15章 测试与质量保证 415 15.1 测试用例 416 15.2 测试方法 417 15.3 单元测试 418...
  • 14.8 活动事务 399 14.9 使用保存点 400 14.10 序列化事务 403 14.11 隔离事务 406 14.12 自治事务 409 14.13 小结 413 第15章 测试与质量保证 415 15.1 测试用例 416 15.2 测试方法 417 15.3 单元测试 418...
  • 经分配的、用于执行项目工作的款额及其他资源。 商业论证 - (Business Case) 指启动和继续一个项目的原因和依据。商业论证应当定义出项目可产生的商业及其他收益,以及项目的成本和时长。商业论证同时还指出如何...
  • 相比之下,CSL所基于的网络主权原则反映在CSL的领土范围内,该领土范围严格限制在“中华人民共和国领土”的第二条之内。 与之形成鲜明对比的是,可以得出这样的结论:仅在中国境内开展业务的公司应同时遵守CSL和...
  • 执行快速或完整文件系统扫描;按需扫描文件和文件夹。 提供实时文件系统扫描。 •使用独特的 Origins Tracing™ 技术检测新的未知恶意软件。 •保护 SD 卡免受自动运行文件和 Exploit.Cpllnk 的感染,这两种文件都...
  • 为服务器分配虚拟 IP 地址范围 62 启用要使用虚拟 IP 地址或虚拟环回的应用程序进程 63 向服务器上的已发布应用程序提供客户端 IP 地址 63 使虚拟环回地址对会话中运行的应用程序可用 64 为场启用或禁用虚拟环回 64 ...
  • realplayer

    2010-08-18 10:57:02
    您同意由 DRM 启用和(或)执行的通信,包括未经进一步通知的 DRM 自动更新,而无论第 6 章节对 AutoUpdate 如何定义。 您同意保护和保障 RN 免于任何与使用第三方 DRM 有关的索赔。 b) 内容供应商使用本“软件”所...
  • 服务器数量的限制 5-13 命名的约束条件 5-13 创建一个新的HMI服务器 5-14 复制一个HMI服务器 5-14 从RSView32、SE或ME中导入工程 5-15 连接到现有的HMI服务器 5-15 设置HMI服务器属性 5-15 设置HMI服务器的常规属性 ...
  • 在Wi-Fi和蜂窝网络过滤之间进行选择,并利用可自定义的规则(按IP地址和/或端口过滤,以及按整个网络或IP范围过滤)。 •监控当前和以前传输的流量; 为您提供有关应用程序连接的地址/端口以及入站和出站流量的信息。...
  • 其次是策略管理工具,利用该工具可在全学校范围内永久地定义和实施NetSupport 限制。 当前,教室管理解决方案在课程持续期间实行使用控制,一旦教师 PC 断开连接,这些限制随即停止。在 NetSupport School 11 中,...
  • 管理员可按照功能灵活分配权限,使得各个业务、活动,均可指定操作员,并执行自己权限范围内的操作,安全可靠,有效防止越权操作。 9、便捷的分类管理 全面支持分类管理,强大的客户区域管理、产品管理等分类,分类...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

限制活动范围如何执行