diff --git a/docs/gitbook/fonts/fontawesome/FontAwesome.otf b/docs/gitbook/fonts/fontawesome/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/docs/gitbook/fonts/fontawesome/FontAwesome.otf differ diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot differ diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf differ diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff differ diff --git a/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 differ diff --git a/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.css b/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.css new file mode 100644 index 0000000..1f7bb95 --- /dev/null +++ b/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.css @@ -0,0 +1,29 @@ +.book .book-summary .chapter > .articles { + overflow: hidden; + max-height: 0px; +} + +.book .book-summary .chapter.expanded > .articles { + max-height: 9999px; +} + +.book .book-summary .exc-trigger { + position: absolute; + left: 12px; + top: 12px; +} + +.book .book-summary ul.summary li a, +.book .book-summary ul.summary li span { + padding-left: 30px; +} + +.book .book-summary .exc-trigger:before { + content: "\f105"; +} + +.book .book-summary .expanded > a .exc-trigger:before, +.book .book-summary .expanded > span .exc-trigger:before { + content: "\f107"; +} + diff --git a/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.js b/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.js new file mode 100644 index 0000000..0a75189 --- /dev/null +++ b/docs/gitbook/gitbook-plugin-chapter-fold/chapter-fold.js @@ -0,0 +1,67 @@ +require(['gitbook', 'jQuery'], function(gitbook, $) { + var TOGGLE_CLASSNAME = 'expanded', + CHAPTER = '.chapter', + ARTICLES = '.articles', + TRIGGER_TEMPLATE = '', + LS_NAMESPACE = 'expChapters'; + var init = function () { + // adding the trigger element to each ARTICLES parent and binding the event + var chapterLink = $(ARTICLES).parent(CHAPTER).children('a'); + chapterLink.append($(TRIGGER_TEMPLATE)); + chapterLink.on('click', function (e) { + e.preventDefault(); + //e.stopPropagation(); + toggle($(e.target).closest(CHAPTER)); + }); + + expand(lsItem()); + //expand current selected chapter with it's parents + collapse($(CHAPTER)); + var activeChapter = $(CHAPTER + '.active'); + expand(activeChapter); + expand(activeChapter.parents(CHAPTER)); + } + //on page.change will happend the function. + + var toggle = function ($chapter) { + if ($chapter.hasClass('expanded')) { + collapse($chapter); + } else { + expand($chapter); + //$chapter.addClass('active').siblings().removeClass('active'); + } + } + var collapse = function ($chapter) { + if ($chapter.length && $chapter.hasClass(TOGGLE_CLASSNAME)) { + $chapter.removeClass(TOGGLE_CLASSNAME); + lsItem($chapter); + } + } + var expand = function ($chapter) { + if ($chapter.length && !$chapter.hasClass(TOGGLE_CLASSNAME)) { + $chapter.addClass(TOGGLE_CLASSNAME); + lsItem($chapter); + } + } + var lsItem = function () { + var map = JSON.parse(localStorage.getItem(LS_NAMESPACE)) || {} + if (arguments.length) { + var $chapters = arguments[0]; + $chapters.each(function (index, element) { + var level = $(this).data('level'); + var value = $(this).hasClass(TOGGLE_CLASSNAME); + map[level] = value; + }) + localStorage.setItem(LS_NAMESPACE, JSON.stringify(map)); + } else { + return $(CHAPTER).map(function(index, element){ + if (map[$(this).data('level')]) { + return this; + } + }) + } + } + gitbook.events.bind('page.change', function() { + init() + }); +}); diff --git a/docs/gitbook/gitbook-plugin-code/plugin.css b/docs/gitbook/gitbook-plugin-code/plugin.css new file mode 100644 index 0000000..a68fcdc --- /dev/null +++ b/docs/gitbook/gitbook-plugin-code/plugin.css @@ -0,0 +1,37 @@ +#code-textarea { + height: 0; + position: fixed; + top: -1000px; + width: 0; +} + +.code-wrapper { + position: relative; +} + +.code-wrapper i { + color: #c1c7cd; + cursor: pointer; + font-size: 12px; + font-weight: bold; + position: absolute; + right: 1em; + top: 1em; +} + +.code-wrapper pre { + background: #f7f8f9; + border-radius: 3px; + counter-reset: line; + font-size: 15px; +} + +.code-wrapper pre > code > span.code-line:before { + counter-increment: line; + color: #c1c7cd; + content: counter(line); + display: inline-block; + font-size: 12px; + margin-right: 1.5em; + width: 1em; +} diff --git a/docs/gitbook/gitbook-plugin-code/plugin.js b/docs/gitbook/gitbook-plugin-code/plugin.js new file mode 100644 index 0000000..555d724 --- /dev/null +++ b/docs/gitbook/gitbook-plugin-code/plugin.js @@ -0,0 +1,91 @@ +require(['gitbook', 'jQuery'], function(gitbook, $) { + + const TERMINAL_HOOK = '**[terminal]' + + var pluginConfig = {}; + var timeouts = {}; + + function addCopyButton(wrapper) { + wrapper.append( + $('') + .click(function() { + copyCommand($(this)); + }) + ); + } + + function addCopyTextarea() { + + /* Add also the text area that will allow to copy */ + $('body').append('",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/search_index.json b/docs/search_index.json new file mode 100644 index 0000000..60d5922 --- /dev/null +++ b/docs/search_index.json @@ -0,0 +1 @@ +{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["2020","6.s081","bilibili","fall","fall2020是麻省理工2020年秋季的操作系统课程,mit将学习相关的资源全部公开并放到了官网。本课程中共涉及11个实验,需要花费一定时间来完成。由于是国外的课程,文档资料均为英文,本人英文水平一般,为方便自己后续查阅和其他英文水平一般的同学也能上手本课程,计划将资料全部翻译为中文。并分享课程笔记和实验记录。","gitbook","github","lab","常用网址","我的实验仓库:xv6","视频翻译:6.s081课程翻译","课程介绍","课程官网:6.s081","课程视频:6.s081"],"tranlate_books/book-riscv-rev1/summary.html":["book","rev1","riscv","xv6:一个简单,类unix的教学用操作系统","本书是6.s081最重要的参考书目,其中详细的介绍了xv6的设计细节,在课程前往往需要阅读对应章节,做实验时也要回来查看。"],"tranlate_books/book-riscv-rev1/c1/s1_0.html":["*buf,","*dir)","*file)","*file,","*sbrk(int","*st)","*status)","1表示出错)","1表示错误","argv[])","bourn","char","chdir(char","close(int","dup(int","exec(char","exit(int","fd)","fd,","file,","file1,","file2)","flags)","fork()","fstat(int","getpid()","int","int)","int,","kill(int","link(char","mkdir(char","mknod(char","n)","open(char","osx、solaris,甚至在一定程度上,microsoft","p[])","pid)","pipe(int","read(int","ritchie的unix","shell是unix","shell是一个普通的程序,它从用户那里读取命令并执行它们。shell是一个用户程序,而不是内核的一部分,这一事实说明了系统调用接口的强大之处:shell没有什么特别之处。这也意味着shell很容易替换;因此,现代unix系统有多种shell可供选择,每种shell都有自己的用户界面和脚本特性。xv6","shell本质的简单实现。它的实现可以在(user/sh.c:1)中找到.","sleep(int","st)","stat","stat(char","status)","struct","thompson和denni","unlink(char","wait(int","windows都有类unix的接口。理解xv6是理解这些系统和其他系统的一个良好开端。","write(int","​","个字节到文件描述符fd;","个字节读入buf;返回读取的字节数;如果文件结束,返回0","为文件file1创建另一个名称(file2)","介绍的基本接口,并且模仿了unix的内部设计。unix提供了一个窄接口,其机制表现突出,提供了令人惊讶的通用程度。这个接口非常成功,甚至现代操作系统bsd、linux、mac","从buf","内核使用cpu提供的硬件保护机制来确保每个在用户空间执行的进程只能访问它自己的内存。内核程序的执行拥有操控硬件的权限,它需要实现这些保护;而用户程序执行时没有这些特权。当用户程序调用系统调用时,硬件会提升权限级别,并开始执行内核中预先安排好的函数。","内核提供的系统调用集合是用户程序看到的接口。xv6内核提供了unix内核传统上提供的服务和系统调用的子集。表1.2列出了xv6的所有系统调用。","写n","创建一个新目录","创建一个管道,把write/read文件描述符放在p[0]和p[1]中","创建一个设备文件","创建一个进程,返回子进程的pid","删除一个文件","加载一个文件并使用参数执行它;","只有在出错时才返回","如图1.1所示,xv6采用传统的内核形式(内核是一个特殊的程序,为正在运行的程序提供服务)。每个正在运行的程序,称为进程,都有包含指令、数据和堆栈的内存。指令实现了程序的运算,数据是计算所依赖的变量,堆栈组织程序的过程调用。一台给定的计算机通常有许多进程,但只有一个内核。","字节增长进程的内存。返回新内存的开始","将n","将打开文件fd的信息放入*st","将指定名称的文件信息放入*st","将退出状态存入*status;","当一个进程需要调用一个内核服务时,它会调用一个系统调用,这是操作系统接口中的一个调用。系统调用进入内核;内核执行服务并返回。因此,一个进程在用户空间和内核空间之间交替执行。","打开一个文件;flags表示read/write;返回一个fd(文件描述符)","按n","描述","操作系统接口","操作系统的任务是在多个程序之间共享一台计算机,并提供比硬件本身支持的更有用的服务。操作系统管理和抽象底层硬件,例如文字处理器不需要关心使用哪种类型的磁盘硬件。一个操作系统在多个程序之间共享硬件,这样它们就可以(或者看起来可以)同时运行。最后,操作系统为程序提供了可控的交互方式,这样它们就可以共享数据或者一起工作。","操作系统通过接口向用户程序提供服务。设计良好的接口是很困难的。一方面,我们希望接口简单明了,因为这样更利于正确使用。另一方面,我们可能倾向于为应用程序提供许多复杂的特性。解决这个问题的诀窍在于设计接口时,依赖一些可结合的机制,以此来提供更好的通用性。","改变当前的工作目录","暂停n个时钟节拍","本书使用单一的操作系统作为具体的例子来说明操作系统的概念。xv6这个操作系统提供了ken","本章的其余部分概述了xv6的服务——进程、内存、文件描述符、管道和文件系统——并用代码片段和关于shell(unix的命令行用户界面)如何使用它们的讨论来阐释。shell对系统调用的使用说明了它们是如何被精心设计的。","相同的文件","第一章","等待一个子进程退出;","系统调用","终止对应pid的进程,返回0,或返回","终止当前进程,并将状态报告给wait()函数。无返回","表1.2:xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回","返回n","返回一个新的文件描述符,指向与fd","返回子进程pid。","返回当前进程的pid","释放打开的文件fd"],"tranlate_books/book-riscv-rev1/c1/s1_1.html":["\"echo\";","\"hello\";","%d","*)","//","0)","0);","0;","1.1","1234","1。如果父进程不关心子进程的退出状态,它可以传递一个0地址给wait。","4.6","=","==",">","argv);","argv[0]","argv[1]","argv[2]","argv[3];","char*","child","child:","child=%d\\n\",","child=1234","done","done\\n\",","error\\n\");","exec(\"/bin/echo\",","exec系统调用使用从文件系统中存储的文件所加载的新内存映像替换调用进程的内存。(百度百科:根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件)该文件必须有特殊的格式,它指定文件的哪部分存放指令,哪部分是数据,以及哪一条指令用于启动等等。xv6使用elf格式(将会在第三章详细讨论)。当exec执行成功,它不向调用进程返回数据,而是使加载自文件的指令在elf","exit","exit(0);","exiting\\n\");","exit系统调用导致调用进程停止执行并释放资源(如内存和打开的文件)。exit接受一个整数状态参数,通常0表示成功,1表示失败。wait系统调用返回当前进程的已退出(或已杀死)子进程的pid,并将子进程的退出状态复制到传递给wait的地址;如果调用方的子进程都没有退出,那么wait等待一个子进程退出。如果调用者没有子级,wait立即返回","fork","fork();","fork()在父进程中返回子进程的pid","header中声明的程序入口处开始执行。exec有两个参数:可执行文件的文件名和字符串参数数组。例如","hello”,它将调用exec(user/sh.c:78)。如果exec成功,那么子进程将从echo而不是runcmd执行命令,在某刻echo会调用exit,这将导致父进程从main(user/sh.c:78)中的wait返回。","hello为参数被调用来执行实际命令。对于“echo","hello时,runcmd(user/sh.c:58)","hello的/bin/echo程序运行,多数程序忽略参数数组中的第一个元素,它通常是程序名。","if(pid","int","parent:","pid","pid);","printf(\"child","printf(\"child:","printf(\"exec","printf(\"fork","printf(\"parent:","sbrk(n)将其数据内存增加n个字节;","sbrk返回新内存的位置。","wait((int","write)优化","xv6","xv6的shell使用上述调用为用户运行程序。shell的主要结构很简单,请参见main(user/sh.c:145)。主循环使用getcmd函数从用户的输入中读取一行,然后调用fork创建一个shell进程的副本。父进程调用wait,子进程执行命令。例如:当用户向shell输入echo","xv6进程由用户空间内存(指令、数据和堆栈)和对内核私有的每个进程状态组成。xv6分时进程:","{","}","一个进程可以使用fork系统调用创建一个新的进程。fork创建了一个新的进程,其内存内容与调用进程(称为父进程)完全相同,称其为子进程。fork在父子进程中都返回值。在父进程中,fork返回子类的pid;在子进程中,fork返回零。例如,考虑下面用c语言编写的程序片段","你或许想知道为什么exec和fork没有组合成为一个系统调用,稍后我们将会看到shell在其i/o重定向的实现中利用了这种分离。为了避免创建一个重复的进程然后立即替换它(使用exec)的浪费,操作内核通过使用虚拟内存技术(如copi","可能以任何一种顺序出来,这取决于父或子谁先到达printf调用。子进程退出后,父进程的wait返回,导致父进程打印","在子进程中返回0","在这个例子中,输出","在这个用例中的实现(见第","它透明地在等待执行的进程集合中切换可用的cpu。当一个进程没有执行时,xv6保存它的cpu寄存器,并在下一次运行该进程时恢复它们。内核利用进程id或pid标识每个进程。","将以echo","尽管最初子进程与父进程有着相同的内存内容,但是二者在运行中拥有不同的内存空间和寄存器:在一个进程中改变变量不会影响到另一个进程。例如当wait的返回值存入父进程的变量pid中时,并不会影响子进程中的pid,子进程中pid仍然为0。","节)。","这个代码片段将调用程序替换为了参数列表为echo","进程和内存","隐式地分配大多数用户空间内存:fork分配父内存的子副本所需的内存,exec分配足够的内存来保存可执行文件。在运行时需要更多内存的进程(可能是malloc)可以调用"],"tranlate_books/book-riscv-rev1/c1/s1_2.html":["!=","\",","\"cat\";","\"hello","\"read","\"world\\n\",","\"write","<","(;;)","(fork()","(n","(write(1,","0)","0;","1.2","2>&1。2>&1告诉shell给命令的文件描述符2是描述符1的副本。现有文件的名称和不存在文件的错误信息都会显示在tmp1文件中。xv6","5)中","6);","=","==",">",">output.txt。","argv);","argv[0]","argv[1]","argv[2];","break;","buf);","buf,","buf[512];","char","char*","close(0);","close系统调用释放一个文件描述符,使其可以被未来使用的open、pipe或dup系统调用重用(见下文)。新分配的文件描述符总是当前进程中编号最小的未使用描述符。","dup(1);","dup系统调用复制一个现有的文件描述符,返回一个引用自同一个底层i/o对象的新文件描述符。两个文件描述符共享一个偏移量,就像fork复制的文件描述符一样。这是另一种将“hello","error\\n\");","exec(\"cat\",","exist","exit(0);","exit(1);","fd","file","fprintf(2,","hello;echo","i/o。","i/o和文件描述符","int","integer),表示进程可以读取或写入的由内核管理的对象。进程可以通过打开一个文件、目录、设备,或创建一个管道,或复制一个已存在的描述符来获得一个文件描述符。为了简单起见,我们通常将文件描述符所指的对象称为“文件”;文件描述符接口将文件、管道和设备之间的差异抽象出来,使它们看起来都像字节流。我们将输入和输出称为","n","n)","n;","non","o_creat","o_rdonli","o_rdonly);","o_rdwr","o_trunc","o_wronli","open(\"input.txt\",","open的第二个参数由一组标志组成,这些标志以位表示,用于控制打开的操作。可能的值定义在文件控制(fcntl)头文件(kernel/fcntl.h:1","read(0,","read和write系统调用以字节为单位读取或写入已打开的以文件描述符命名的文件。read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf,并返回读取的字节数,引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。","shell不支持错误文件描述符的i/o重定向,但是现在你知道如何实现它了。","sizeof","tmp1","wait(0);","world)","world”写入文件的方法:","world。父进程中的写操作(由于等待,只有在子进程完成后才运行)在子进程停止写入的位置进行。这种行为有助于从shell命令序列产生顺序输出,比如(echo","write(1,","write(fd,","xv6shell中的i/o重定向代码就是这样工作的(user/sh.c:82)。回想一下,在代码执行到这里时,shell已经fork出了子shell,runcmd将调用exec来加载新程序。","{","}","代码片段中需要注意的重要一点是,cat不知道它是从文件、控制台还是管道读取。同样也不知道它是打印到控制台、文件还是其他什么地方。文件描述符的使用以及文件描述符0是输入而文件描述符1是输出的约定允许了cat的简单实现。","以下程序片段(构成程序cat的本质)将数据从其标准输入复制到其标准输出。如果发生错误,它将消息写入标准错误:","功能说明","只写","只读","可读可写","在内部,xv6内核使用文件描述符作为每个进程表的索引,这样每个进程都有一个从零开始的文件描述符的私有空间。按照惯例,进程从文件描述符0读取(标准输入),将输出写入文件描述符1(标准输出),并将错误消息写入文件描述符2(标准错误)。正如我们将看到的,shell利用这个约定来实现i/o重定向和管道。shell确保它始终有三个打开的文件描述符(user/sh.c:151),这是控制台的默认文件描述符。","在子进程关闭文件描述符0之后,open保证使用新打开的input.txt:0的文件描述符作为最小的可用文件描述符。cat然后执行文件描述符0(标准输入),但引用的是input.txt。父进程的文件描述符不会被这个序列改变,因为它只修改子进程的描述符。","在这个片段的末尾,附加到文件描述符1的文件将包含数据hello","如果两个文件描述符是通过一系列fork和dup调用从同一个原始文件描述符派生出来的,那么它们共享一个偏移量。否则,文件描述符不会共享偏移量,即使它们来自于对同一文件的打开调用。dup允许shell执行这样的命令:l","如果文件不存在则创建文件","宏定义","将文件截断为零长度","尽管fork复制了文件描述符表,但是每个基础文件偏移量在父文件和子文件之间是共享的,比如下面的程序:","文件描述符和fork相互作用,使i/o重定向更容易实现。fork复制父进程的文件描述符表及其内存,以便子级以与父级在开始时拥有完全相同的打开文件。系统调用exec替换了调用进程的内存,但保留其文件表。此行为允许shell通过fork实现i/o重定向,在子进程中重新打开选定的文件描述符,然后调用exec来运行新程序。下面是shell运行命令cat","文件描述符是一个小整数(small","文件描述符是一个强大的抽象,因为它们隐藏了它们所连接的细节:写入文件描述符1的进程可能写入文件、设备(如控制台)或管道。","现在应该很清楚为什么fork和exec分离的用处了:在这两个调用之间,shell有机会对子进程进行i/o重定向,而不会干扰主shell的i/o设置。我们可以想象一个假设的forkexec系统调用组合,但是用这样的调用进行i/o重定向是很笨拙的。shell可以在调用forkexec之前修改自己的i/o设置(然后撤销这些修改);或者forkexec可以将i/o重定向的指令作为参数;或者(最不吸引人的是)可以让每个程序(如cat)执行自己的i/o重定向。","的代码的简化版本。","系统调用write(fd,buf,n)将buf中的n字节写入文件描述符,并返回写入的字节数。只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。"],"tranlate_books/book-riscv-rev1/c1/s1_3.html":["\"hello","\"wc\";","(fork()","*argv[2];","/tmp/xyz;","0)","0;","1.3","10","12);","=","==",">",">left)。然后,例如,echo",">left进行fork,并在内部进程中运行runcmd(p",">right)执行fork时也会更加复杂。例如,只需进行上述的修改,sleep","argv);","argv[0]","argv[1]","b","c),该管道本身fork为两个新的子进程(一个用于b,一个用于c)。因此,shell可以创建一个进程树。这个树的叶子是命令,内部节点是等待左右两个子进程完成的进程。","char","close(0);","close(p[0]);","close(p[1]);","dup(p[0]);","echo","exec(\"/bin/wc\",","fork","hello","hi","hi在runcmd中退出时,内部进程将退出,而不会调用fork来运行管道的右端。这个不正确的行为可以通过不调用内部进程的runcmd中的exit来修复,但是这个修复使代码复杂化:现在runcmd需要知道它是否是一个内部进程。同样的,当没有对(p","hi将立即打印“hi”,而不是在10秒后,因为echo将立即运行并退出,而不是等待sleep完成。因为sh.c的目标是尽可能的简单,所以它不会试图避免创建内部进程。","int","l之类的管道。子进程创建一个管道将管道的左端和右端连接起来。然后对管道的左端调用fork和runcmd,对管道的右端调用fork和runcmd,并等待两者都完成。管道的右端可能是一个命令,该命令本身包含一个管道(例如,a","p[2];","pipe(p);","sh.c","shell以类似于上面代码(user/sh.c:100)的方式实现了诸如grep","wc","wc将不会产生输出,因为当echo","world","world\\n\",","write(p[1],","xv6","{","|","}","下面的示例代码使用连接到管道读端的标准输入来运行程序wc。","其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。","原则上,可以让内部节点在管道的左端运行,但是正确地这样做会使实现复杂化。考虑进行以下修改:将sh.c更改为不对p","可以不通过管道实现,如下","在这种情况下,管道相比临时文件至少有四个优势","如果没有可用的数据,则管道上的read操作等待写入数据或关闭所有指向写入端的文件描述符,在后一种情况下,read将返回0,就像到达数据文件的末尾一样。事实上,read在新数据不可能到达前会一直阻塞,这是子进程在执行上面的wc之前关闭管道的写入端非常重要的一个原因:如果wc的文件描述符之一指向管道的写入端,wc将永远看不到文件的结束。","程序调用pipe,创建一个新的管道,并在数组p中记录读写文件描述符。在fork之后,父子进程都有指向管道的文件描述符。子进程调用close和dup使文件描述符0指向管道的读取端(前面说过优先分配最小的未使用的描述符),然后关闭p中所存的文件描述符,并调用exec运行wc。当wc从它的标准输入读取时,就是从管道读取。父进程关闭管道的读取端,写入管道,然后关闭写入端。","第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。","第四,如果实现进程间通讯,管道的块读写比文件的非块语义更有效率。","管道","管道是作为一对文件描述符公开给进程的小型内核缓冲区,一个用于读取,一个用于写入。将数据写入管道的一端使得这些数据可以从管道的另一端读取。管道为进程提供了一种通信方式。","管道看起来并不比临时文件更强大:下面的管道命令行","首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除"],"tranlate_books/book-riscv-rev1/c1/s1_4.html":["\"b\");","#defin","//","1","1);","1,","1.4","2","3","=","chdir(\"/a\");","chdir(\"b\");","close(fd);","dev;","devic","directori","fd","file","fstat系统调用从文件描述符所引用的inode中检索信息。它填充一个stat类型的结构体,struct","ino;","inode编号","int","link(\"a\",","link系统调用创建另一个文件名,该文件名指向与现有文件相同的inode。下面的代码片段创建了一个名字既为a又为b的新文件","mkdir(\"/dir\");","mkdir创建一个新目录","mknod(\"/console\",","mknod创建一个引用设备的特殊文件。与设备文件相关联的是主设备号和次设备号(mknod的两个参数),它们唯一地标识了一个内核设备。当进程稍后打开设备文件时,内核将使用内核设备实现read和write系统调用,而不是使用文件系统。","mknod创建一个新的设备文件","nlink;","o_creat","o_rdonly);","o_rdwr);","o_wronly);","open(\"/a/b/c\",","open(\"/dir/file\",","open(\"/tmp/xyz\",","open(\"a\",","open(\"c\",","open中若使用o_create标志将会创建一个新的数据文件","short","size;","stat","stat在stat.h(kernel/stat.h)中定义为","struct","t_devic","t_dir","t_file","type;","uint","uint64","unix以用户级程序的形式提供了可从shell调用的文件实用程序,例如mkdir、ln和rm。这种设计允许任何人通过添加新的用户级程序来扩展命令行接口。事后看来,这个计划似乎是显而易见的,但是在unix时代设计的其他系统经常将这样的命令构建到shell中(并将shell构建到内核中)","unlink(\"/tmp/xyz\");","unlink(\"a\");","unlink系统调用从文件系统中删除一个名称。只有当文件的链接数为零且没有文件描述符引用时,文件的inode和包含其内容的磁盘空间才会被释放,因此添加","xv6文件系统提供数据文件(包含未解释的字节数组)和目录(包含对数据文件和其他目录的命名引用)。这些目录形成一个树,从一个叫做根的特殊目录开始。像/a/b/c这样的路径是指在根目录/下名为a的目录中名为b的目录中名为c的文件或目录。不以/开始的路径相对于调用进程的当前工作目录进行计算,当前工作目录可以通过chdir系统调用进行更改。下面两个代码片段打开相同的文件(假设所有相关的目录都存在)","{","|","};","一个例外是cd,它是内置在shell(user/sh.c:160)。cd必须更改shell本身的当前工作目录。如果cd作为常规命令运行,那么shell将分出一个子进程,子进程将运行cd,cd将更改子进程的工作目录。父目录(即shell的)的工作目录不会改变。","一个文件的名字和文件本身是不同的;同一个底层文件(叫做inode,索引结点)可以有多个名字(叫做link,链接)。每个链接都由目录中的一个条目组成;该条目包含一个文件名和一个inode引用。inode保存有关文件的元数据(用于解释或帮助理解信息的数据),包括其类型(文件/目录/设备)、长度、文件内容在磁盘上的位置以及指向文件的链接数。","上面代码将进程的当前目录更改为/a/b;下面代码既不引用也不更改进程的当前目录","从a读取或写入与从b读取或写入是相同的操作。每个inode由唯一的inode编号标识。在上面的代码序列之后,可以通过检查fstat的结果来确定a和b引用相同的底层内容:两者都将返回相同的inode号(ino),并且nlink计数将被设置为2。","指向文件的链接数","文件字节数","文件类型","文件系统","文件系统的磁盘设备","是创建没有名称的临时inode的惯用方法,该临时inode将在进程关闭fd或退出时被清理。","最后一行代码序列中会使inode和文件内容可以作为b访问。此外","还有创建新文件和目录的系统调用:","这个例子说明了这三点:"],"tranlate_books/book-riscv-rev1/c1/s1_5.html":["1.5","unix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作,这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化,这种文化对unix的强大和流行做出了卓越贡献,shell是第一个所谓的“脚本语言”。unix系统调用接口今天仍然存在于bsd、linux和macosx等系统中。","unix系统调用接口已经通过便携式操作系统接口(posix)标准进行了标准化。xv6与posix不兼容:它缺少许多系统调用(包括lseek等基本系统调用),并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了,同时提供一个简单的类unix系统调用接口。为了运行基本的unix程序,有些人扩展了xv6,增加了一些系统调用和一个简单的c库。然而,现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如,它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展,提供了许多超越posix的特性。","unix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是plan9,它将“资源是文件”的概念应用到网络、图形等等。然而,大多数unix衍生的操作系统并没有遵循这条路。","xv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用unix的术语来说,所有的xv6进程都作为root运行。","文件系统和文件描述符是强大的抽象。即便如此,还有其他的操作系统接口模型。multics,unix的前身,以一种看起来像内存的方式抽象了文件存储,产生了一种非常不同的接口风格。multics设计的复杂性直接影响了unix的设计者,他们试图使设计更简单。","本书研究了xv6如何实现其类unix接口,但这些思想和概念不仅仅适用于unix。任何操作系统都必须在底层硬件上复用进程,彼此隔离进程,并提供受控制的进程间通讯机制。在学习了xv6之后,你应该去看看更复杂的操作系统,以及这些系统中与xv6相同的底层基本概念。","真实世界"],"tranlate_books/book-riscv-rev1/c1/s1_6.html":["1.6","pong”一个字节(也就是像打乒乓球一样来回传递),每个方向一个管道。以每秒的交换次数为单位,测量程序的性能。","练习","编写一个使用unix系统调用的程序,通过一对管道在两个进程之间“p"]},"length":9},"tokenStore":{"root":{"0":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.03076923076923077},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}},"1":{"0":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}},"2":{"3":{"4":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"docs":{}},"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}},"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}},"表":{"docs":{},"示":{"docs":{},"出":{"docs":{},"错":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"错":{"docs":{},"误":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},".":{"1":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":5.01123595505618}}},"2":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":5.007692307692308}}},"3":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":5.012987012987013}}},"4":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":5.011111111111111}}},"5":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":5.125}}},"6":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_6.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_6.html","tf":5.25}}},"docs":{}},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"不":{"docs":{},"关":{"docs":{},"心":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"退":{"docs":{},"出":{"docs":{},"状":{"docs":{},"态":{"docs":{},",":{"docs":{},"它":{"docs":{},"可":{"docs":{},"以":{"docs":{},"传":{"docs":{},"递":{"docs":{},"一":{"docs":{},"个":{"0":{"docs":{},"地":{"docs":{},"址":{"docs":{},"给":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}},"2":{"0":{"2":{"0":{"docs":{"./":{"ref":"./","tf":0.13333333333333333}}},"docs":{}},"docs":{}},"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}},">":{"docs":{},"&":{"1":{"docs":{},"。":{"2":{"docs":{},">":{"docs":{},"&":{"1":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"给":{"docs":{},"命":{"docs":{},"令":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"2":{"docs":{},"是":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"1":{"docs":{},"的":{"docs":{},"副":{"docs":{},"本":{"docs":{},"。":{"docs":{},"现":{"docs":{},"有":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},"和":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"错":{"docs":{},"误":{"docs":{},"信":{"docs":{},"息":{"docs":{},"都":{"docs":{},"会":{"docs":{},"显":{"docs":{},"示":{"docs":{},"在":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"1":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"docs":{}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{}}}},"docs":{}}},"docs":{}}}},"3":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}},"4":{"docs":{},".":{"6":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"docs":{}}},"5":{"docs":{},")":{"docs":{},"中":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"6":{"docs":{},".":{"docs":{},"s":{"0":{"8":{"1":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}},"docs":{}},"docs":{}},"docs":{}}},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.03076923076923077}}}}},"docs":{},"b":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"tranlate_books/book-riscv-rev1/summary.html":{"ref":"tranlate_books/book-riscv-rev1/summary.html","tf":3.333333333333333}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}},"u":{"docs":{},"f":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}},"[":{"5":{"1":{"2":{"docs":{},"]":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"docs":{}},"docs":{}},"docs":{}}}}},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"2":{"0":{"2":{"0":{"docs":{},"是":{"docs":{},"麻":{"docs":{},"省":{"docs":{},"理":{"docs":{},"工":{"2":{"0":{"2":{"0":{"docs":{},"年":{"docs":{},"秋":{"docs":{},"季":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"课":{"docs":{},"程":{"docs":{},",":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"将":{"docs":{},"学":{"docs":{},"习":{"docs":{},"相":{"docs":{},"关":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"全":{"docs":{},"部":{"docs":{},"公":{"docs":{},"开":{"docs":{},"并":{"docs":{},"放":{"docs":{},"到":{"docs":{},"了":{"docs":{},"官":{"docs":{},"网":{"docs":{},"。":{"docs":{},"本":{"docs":{},"课":{"docs":{},"程":{"docs":{},"中":{"docs":{},"共":{"docs":{},"涉":{"docs":{},"及":{"1":{"1":{"docs":{},"个":{"docs":{},"实":{"docs":{},"验":{"docs":{},",":{"docs":{},"需":{"docs":{},"要":{"docs":{},"花":{"docs":{},"费":{"docs":{},"一":{"docs":{},"定":{"docs":{},"时":{"docs":{},"间":{"docs":{},"来":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{},"由":{"docs":{},"于":{"docs":{},"是":{"docs":{},"国":{"docs":{},"外":{"docs":{},"的":{"docs":{},"课":{"docs":{},"程":{"docs":{},",":{"docs":{},"文":{"docs":{},"档":{"docs":{},"资":{"docs":{},"料":{"docs":{},"均":{"docs":{},"为":{"docs":{},"英":{"docs":{},"文":{"docs":{},",":{"docs":{},"本":{"docs":{},"人":{"docs":{},"英":{"docs":{},"文":{"docs":{},"水":{"docs":{},"平":{"docs":{},"一":{"docs":{},"般":{"docs":{},",":{"docs":{},"为":{"docs":{},"方":{"docs":{},"便":{"docs":{},"自":{"docs":{},"己":{"docs":{},"后":{"docs":{},"续":{"docs":{},"查":{"docs":{},"阅":{"docs":{},"和":{"docs":{},"其":{"docs":{},"他":{"docs":{},"英":{"docs":{},"文":{"docs":{},"水":{"docs":{},"平":{"docs":{},"一":{"docs":{},"般":{"docs":{},"的":{"docs":{},"同":{"docs":{},"学":{"docs":{},"也":{"docs":{},"能":{"docs":{},"上":{"docs":{},"手":{"docs":{},"本":{"docs":{},"课":{"docs":{},"程":{"docs":{},",":{"docs":{},"计":{"docs":{},"划":{"docs":{},"将":{"docs":{},"资":{"docs":{},"料":{"docs":{},"全":{"docs":{},"部":{"docs":{},"翻":{"docs":{},"译":{"docs":{},"为":{"docs":{},"中":{"docs":{},"文":{"docs":{},"。":{"docs":{},"并":{"docs":{},"分":{"docs":{},"享":{"docs":{},"课":{"docs":{},"程":{"docs":{},"笔":{"docs":{},"记":{"docs":{},"和":{"docs":{},"实":{"docs":{},"验":{"docs":{},"记":{"docs":{},"录":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.022222222222222223}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.021739130434782608}}}},"i":{"docs":{},"l":{"docs":{},"e":{"1":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"2":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406}}}}}},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{},"s":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"(":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"在":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"返":{"docs":{},"回":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"所":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"中":{"docs":{},"检":{"docs":{},"索":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"它":{"docs":{},"填":{"docs":{},"充":{"docs":{},"一":{"docs":{},"个":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"体":{"docs":{},",":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"f":{"docs":{},"(":{"2":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}}},"docs":{}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}}},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"a":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"创":{"docs":{},"建":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},",":{"docs":{},"该":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"指":{"docs":{},"向":{"docs":{},"与":{"docs":{},"现":{"docs":{},"有":{"docs":{},"文":{"docs":{},"件":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"创":{"docs":{},"建":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"字":{"docs":{},"既":{"docs":{},"为":{"docs":{},"a":{"docs":{},"又":{"docs":{},"为":{"docs":{},"b":{"docs":{},"的":{"docs":{},"新":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"之":{"docs":{},"类":{"docs":{},"的":{"docs":{},"管":{"docs":{},"道":{"docs":{},"。":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"管":{"docs":{},"道":{"docs":{},"将":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"左":{"docs":{},"端":{"docs":{},"和":{"docs":{},"右":{"docs":{},"端":{"docs":{},"连":{"docs":{},"接":{"docs":{},"起":{"docs":{},"来":{"docs":{},"。":{"docs":{},"然":{"docs":{},"后":{"docs":{},"对":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"左":{"docs":{},"端":{"docs":{},"调":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"和":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},",":{"docs":{},"对":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"右":{"docs":{},"端":{"docs":{},"调":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"和":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},",":{"docs":{},"并":{"docs":{},"等":{"docs":{},"待":{"docs":{},"两":{"docs":{},"者":{"docs":{},"都":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"右":{"docs":{},"端":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"该":{"docs":{},"命":{"docs":{},"令":{"docs":{},"本":{"docs":{},"身":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"管":{"docs":{},"道":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"a":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"常":{"docs":{},"用":{"docs":{},"网":{"docs":{},"址":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}},"我":{"docs":{},"的":{"docs":{},"实":{"docs":{},"验":{"docs":{},"仓":{"docs":{},"库":{"docs":{},":":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}},"docs":{}}}}}}}}}},"视":{"docs":{},"频":{"docs":{},"翻":{"docs":{},"译":{"docs":{},":":{"6":{"docs":{},".":{"docs":{},"s":{"0":{"8":{"1":{"docs":{},"课":{"docs":{},"程":{"docs":{},"翻":{"docs":{},"译":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}}}}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}},"课":{"docs":{},"程":{"docs":{},"介":{"docs":{},"绍":{"docs":{"./":{"ref":"./","tf":10.066666666666666}}}},"官":{"docs":{},"网":{"docs":{},":":{"6":{"docs":{},".":{"docs":{},"s":{"0":{"8":{"1":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}},"视":{"docs":{},"频":{"docs":{},":":{"6":{"docs":{},".":{"docs":{},"s":{"0":{"8":{"1":{"docs":{"./":{"ref":"./","tf":0.06666666666666667}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}}}},"r":{"docs":{},"e":{"docs":{},"v":{"1":{"docs":{"tranlate_books/book-riscv-rev1/summary.html":{"ref":"tranlate_books/book-riscv-rev1/summary.html","tf":3.333333333333333}}},"docs":{}},"a":{"docs":{},"d":{"docs":{},"(":{"0":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"和":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"以":{"docs":{},"字":{"docs":{},"节":{"docs":{},"为":{"docs":{},"单":{"docs":{},"位":{"docs":{},"读":{"docs":{},"取":{"docs":{},"或":{"docs":{},"写":{"docs":{},"入":{"docs":{},"已":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"以":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"命":{"docs":{},"名":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"(":{"docs":{},"f":{"docs":{},"d":{"docs":{},",":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},",":{"docs":{},"n":{"docs":{},")":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"f":{"docs":{},"d":{"docs":{},"读":{"docs":{},"取":{"docs":{},"最":{"docs":{},"多":{"docs":{},"n":{"docs":{},"字":{"docs":{},"节":{"docs":{},",":{"docs":{},"将":{"docs":{},"它":{"docs":{},"们":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},",":{"docs":{},"并":{"docs":{},"返":{"docs":{},"回":{"docs":{},"读":{"docs":{},"取":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},",":{"docs":{},"引":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"每":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"都":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"与":{"docs":{},"之":{"docs":{},"关":{"docs":{},"联":{"docs":{},"的":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"。":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"从":{"docs":{},"当":{"docs":{},"前":{"docs":{},"文":{"docs":{},"件":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"开":{"docs":{},"始":{"docs":{},"读":{"docs":{},"取":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"将":{"docs":{},"该":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"前":{"docs":{},"进":{"docs":{},"所":{"docs":{},"读":{"docs":{},"取":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},":":{"docs":{},"(":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},")":{"docs":{},"后":{"docs":{},"续":{"docs":{},"读":{"docs":{},"取":{"docs":{},"将":{"docs":{},"返":{"docs":{},"回":{"docs":{},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"读":{"docs":{},"取":{"docs":{},"返":{"docs":{},"回":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"之":{"docs":{},"后":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"。":{"docs":{},"当":{"docs":{},"没":{"docs":{},"有":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"可":{"docs":{},"读":{"docs":{},"时":{"docs":{},",":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{},"来":{"docs":{},"表":{"docs":{},"示":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"结":{"docs":{},"束":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"c":{"docs":{},"v":{"docs":{"tranlate_books/book-riscv-rev1/summary.html":{"ref":"tranlate_books/book-riscv-rev1/summary.html","tf":3.333333333333333}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"e":{"docs":{},"的":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}},"x":{"docs":{},"v":{"6":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},":":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"类":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"教":{"docs":{},"学":{"docs":{},"用":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{"tranlate_books/book-riscv-rev1/summary.html":{"ref":"tranlate_books/book-riscv-rev1/summary.html","tf":0.5}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"使":{"docs":{},"用":{"docs":{},"上":{"docs":{},"述":{"docs":{},"调":{"docs":{},"用":{"docs":{},"为":{"docs":{},"用":{"docs":{},"户":{"docs":{},"运":{"docs":{},"行":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"的":{"docs":{},"主":{"docs":{},"要":{"docs":{},"结":{"docs":{},"构":{"docs":{},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"请":{"docs":{},"参":{"docs":{},"见":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"1":{"4":{"5":{"docs":{},")":{"docs":{},"。":{"docs":{},"主":{"docs":{},"循":{"docs":{},"环":{"docs":{},"使":{"docs":{},"用":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"函":{"docs":{},"数":{"docs":{},"从":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},"中":{"docs":{},"读":{"docs":{},"取":{"docs":{},"一":{"docs":{},"行":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"调":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"副":{"docs":{},"本":{"docs":{},"。":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"调":{"docs":{},"用":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},",":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"执":{"docs":{},"行":{"docs":{},"命":{"docs":{},"令":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"当":{"docs":{},"用":{"docs":{},"户":{"docs":{},"向":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"输":{"docs":{},"入":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"进":{"docs":{},"程":{"docs":{},"由":{"docs":{},"用":{"docs":{},"户":{"docs":{},"空":{"docs":{},"间":{"docs":{},"内":{"docs":{},"存":{"docs":{},"(":{"docs":{},"指":{"docs":{},"令":{"docs":{},"、":{"docs":{},"数":{"docs":{},"据":{"docs":{},"和":{"docs":{},"堆":{"docs":{},"栈":{"docs":{},")":{"docs":{},"和":{"docs":{},"对":{"docs":{},"内":{"docs":{},"核":{"docs":{},"私":{"docs":{},"有":{"docs":{},"的":{"docs":{},"每":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"状":{"docs":{},"态":{"docs":{},"组":{"docs":{},"成":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"分":{"docs":{},"时":{"docs":{},"进":{"docs":{},"程":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"中":{"docs":{},"的":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"代":{"docs":{},"码":{"docs":{},"就":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"工":{"docs":{},"作":{"docs":{},"的":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"8":{"2":{"docs":{},")":{"docs":{},"。":{"docs":{},"回":{"docs":{},"想":{"docs":{},"一":{"docs":{},"下":{"docs":{},",":{"docs":{},"在":{"docs":{},"代":{"docs":{},"码":{"docs":{},"执":{"docs":{},"行":{"docs":{},"到":{"docs":{},"这":{"docs":{},"里":{"docs":{},"时":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"已":{"docs":{},"经":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"出":{"docs":{},"了":{"docs":{},"子":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},",":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"将":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"来":{"docs":{},"加":{"docs":{},"载":{"docs":{},"新":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"提":{"docs":{},"供":{"docs":{},"数":{"docs":{},"据":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"包":{"docs":{},"含":{"docs":{},"未":{"docs":{},"解":{"docs":{},"释":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},"组":{"docs":{},")":{"docs":{},"和":{"docs":{},"目":{"docs":{},"录":{"docs":{},"(":{"docs":{},"包":{"docs":{},"含":{"docs":{},"对":{"docs":{},"数":{"docs":{},"据":{"docs":{},"文":{"docs":{},"件":{"docs":{},"和":{"docs":{},"其":{"docs":{},"他":{"docs":{},"目":{"docs":{},"录":{"docs":{},"的":{"docs":{},"命":{"docs":{},"名":{"docs":{},"引":{"docs":{},"用":{"docs":{},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"目":{"docs":{},"录":{"docs":{},"形":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"树":{"docs":{},",":{"docs":{},"从":{"docs":{},"一":{"docs":{},"个":{"docs":{},"叫":{"docs":{},"做":{"docs":{},"根":{"docs":{},"的":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"目":{"docs":{},"录":{"docs":{},"开":{"docs":{},"始":{"docs":{},"。":{"docs":{},"像":{"docs":{},"/":{"docs":{},"a":{"docs":{},"/":{"docs":{},"b":{"docs":{},"/":{"docs":{},"c":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"路":{"docs":{},"径":{"docs":{},"是":{"docs":{},"指":{"docs":{},"在":{"docs":{},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{},"/":{"docs":{},"下":{"docs":{},"名":{"docs":{},"为":{"docs":{},"a":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"名":{"docs":{},"为":{"docs":{},"b":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"名":{"docs":{},"为":{"docs":{},"c":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"或":{"docs":{},"目":{"docs":{},"录":{"docs":{},"。":{"docs":{},"不":{"docs":{},"以":{"docs":{},"/":{"docs":{},"开":{"docs":{},"始":{"docs":{},"的":{"docs":{},"路":{"docs":{},"径":{"docs":{},"相":{"docs":{},"对":{"docs":{},"于":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"当":{"docs":{},"前":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"进":{"docs":{},"行":{"docs":{},"计":{"docs":{},"算":{"docs":{},",":{"docs":{},"当":{"docs":{},"前":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"c":{"docs":{},"h":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"行":{"docs":{},"更":{"docs":{},"改":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"两":{"docs":{},"个":{"docs":{},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"打":{"docs":{},"开":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"假":{"docs":{},"设":{"docs":{},"所":{"docs":{},"有":{"docs":{},"相":{"docs":{},"关":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},"都":{"docs":{},"存":{"docs":{},"在":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"没":{"docs":{},"有":{"docs":{},"提":{"docs":{},"供":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"户":{"docs":{},"概":{"docs":{},"念":{"docs":{},"或":{"docs":{},"者":{"docs":{},"保":{"docs":{},"护":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"户":{"docs":{},"不":{"docs":{},"受":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"伤":{"docs":{},"害":{"docs":{},";":{"docs":{},"用":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"术":{"docs":{},"语":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"进":{"docs":{},"程":{"docs":{},"都":{"docs":{},"作":{"docs":{},"为":{"docs":{},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"运":{"docs":{},"行":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"本":{"docs":{},"书":{"docs":{},"是":{"6":{"docs":{},".":{"docs":{},"s":{"0":{"8":{"1":{"docs":{},"最":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"参":{"docs":{},"考":{"docs":{},"书":{"docs":{},"目":{"docs":{},",":{"docs":{},"其":{"docs":{},"中":{"docs":{},"详":{"docs":{},"细":{"docs":{},"的":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"细":{"docs":{},"节":{"docs":{},",":{"docs":{},"在":{"docs":{},"课":{"docs":{},"程":{"docs":{},"前":{"docs":{},"往":{"docs":{},"往":{"docs":{},"需":{"docs":{},"要":{"docs":{},"阅":{"docs":{},"读":{"docs":{},"对":{"docs":{},"应":{"docs":{},"章":{"docs":{},"节":{"docs":{},",":{"docs":{},"做":{"docs":{},"实":{"docs":{},"验":{"docs":{},"时":{"docs":{},"也":{"docs":{},"要":{"docs":{},"回":{"docs":{},"来":{"docs":{},"查":{"docs":{},"看":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/summary.html":{"ref":"tranlate_books/book-riscv-rev1/summary.html","tf":0.5}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}},"使":{"docs":{},"用":{"docs":{},"单":{"docs":{},"一":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"作":{"docs":{},"为":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"来":{"docs":{},"说":{"docs":{},"明":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"这":{"docs":{},"个":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"研":{"docs":{},"究":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"如":{"docs":{},"何":{"docs":{},"实":{"docs":{},"现":{"docs":{},"其":{"docs":{},"类":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"但":{"docs":{},"这":{"docs":{},"些":{"docs":{},"思":{"docs":{},"想":{"docs":{},"和":{"docs":{},"概":{"docs":{},"念":{"docs":{},"不":{"docs":{},"仅":{"docs":{},"仅":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"。":{"docs":{},"任":{"docs":{},"何":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"都":{"docs":{},"必":{"docs":{},"须":{"docs":{},"在":{"docs":{},"底":{"docs":{},"层":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"上":{"docs":{},"复":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"彼":{"docs":{},"此":{"docs":{},"隔":{"docs":{},"离":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"并":{"docs":{},"提":{"docs":{},"供":{"docs":{},"受":{"docs":{},"控":{"docs":{},"制":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"间":{"docs":{},"通":{"docs":{},"讯":{"docs":{},"机":{"docs":{},"制":{"docs":{},"。":{"docs":{},"在":{"docs":{},"学":{"docs":{},"习":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"之":{"docs":{},"后":{"docs":{},",":{"docs":{},"你":{"docs":{},"应":{"docs":{},"该":{"docs":{},"去":{"docs":{},"看":{"docs":{},"看":{"docs":{},"更":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"以":{"docs":{},"及":{"docs":{},"这":{"docs":{},"些":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"与":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"底":{"docs":{},"层":{"docs":{},"基":{"docs":{},"本":{"docs":{},"概":{"docs":{},"念":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"章":{"docs":{},"的":{"docs":{},"其":{"docs":{},"余":{"docs":{},"部":{"docs":{},"分":{"docs":{},"概":{"docs":{},"述":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"—":{"docs":{},"—":{"docs":{},"进":{"docs":{},"程":{"docs":{},"、":{"docs":{},"内":{"docs":{},"存":{"docs":{},"、":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"、":{"docs":{},"管":{"docs":{},"道":{"docs":{},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"—":{"docs":{},"—":{"docs":{},"并":{"docs":{},"用":{"docs":{},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"和":{"docs":{},"关":{"docs":{},"于":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"用":{"docs":{},"户":{"docs":{},"界":{"docs":{},"面":{"docs":{},")":{"docs":{},"如":{"docs":{},"何":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"们":{"docs":{},"的":{"docs":{},"讨":{"docs":{},"论":{"docs":{},"来":{"docs":{},"阐":{"docs":{},"释":{"docs":{},"。":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"对":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"说":{"docs":{},"明":{"docs":{},"了":{"docs":{},"它":{"docs":{},"们":{"docs":{},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"被":{"docs":{},"精":{"docs":{},"心":{"docs":{},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}},"*":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406}}}}}}},"s":{"docs":{},"b":{"docs":{},"r":{"docs":{},"k":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}},"t":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"v":{"docs":{},"[":{"2":{"docs":{},"]":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}},"docs":{}}}}}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"v":{"docs":{},"[":{"0":{"docs":{},"]":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}},"1":{"docs":{},"]":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}},"2":{"docs":{},"]":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"3":{"docs":{},"]":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}},"docs":{},"]":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.036231884057971016},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"*":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"/":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"b":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"=":{"1":{"2":{"3":{"4":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"docs":{}},"docs":{}},"docs":{}},"docs":{},"%":{"docs":{},"d":{"docs":{},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"0":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"p":{"docs":{},"[":{"0":{"docs":{},"]":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976}}}}}},"1":{"docs":{},"]":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976}}}}}},"docs":{}}},"f":{"docs":{},"d":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"释":{"docs":{},"放":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"使":{"docs":{},"其":{"docs":{},"可":{"docs":{},"以":{"docs":{},"被":{"docs":{},"未":{"docs":{},"来":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"、":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},"或":{"docs":{},"d":{"docs":{},"u":{"docs":{},"p":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"重":{"docs":{},"用":{"docs":{},"(":{"docs":{},"见":{"docs":{},"下":{"docs":{},"文":{"docs":{},")":{"docs":{},"。":{"docs":{},"新":{"docs":{},"分":{"docs":{},"配":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"总":{"docs":{},"是":{"docs":{},"当":{"docs":{},"前":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"编":{"docs":{},"号":{"docs":{},"最":{"docs":{},"小":{"docs":{},"的":{"docs":{},"未":{"docs":{},"使":{"docs":{},"用":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},",":{"docs":{},"该":{"docs":{},"管":{"docs":{},"道":{"docs":{},"本":{"docs":{},"身":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"为":{"docs":{},"两":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"(":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"于":{"docs":{},"b":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"于":{"docs":{},"c":{"docs":{},")":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"可":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"树":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"树":{"docs":{},"的":{"docs":{},"叶":{"docs":{},"子":{"docs":{},"是":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"内":{"docs":{},"部":{"docs":{},"节":{"docs":{},"点":{"docs":{},"是":{"docs":{},"等":{"docs":{},"待":{"docs":{},"左":{"docs":{},"右":{"docs":{},"两":{"docs":{},"个":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"完":{"docs":{},"成":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"p":{"docs":{},"(":{"1":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"p":{"docs":{},"[":{"0":{"docs":{},"]":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}},"docs":{}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"复":{"docs":{},"制":{"docs":{},"一":{"docs":{},"个":{"docs":{},"现":{"docs":{},"有":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"引":{"docs":{},"用":{"docs":{},"自":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"底":{"docs":{},"层":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"新":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{},"两":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"共":{"docs":{},"享":{"docs":{},"一":{"docs":{},"个":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},",":{"docs":{},"就":{"docs":{},"像":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"复":{"docs":{},"制":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"一":{"docs":{},"样":{"docs":{},"。":{"docs":{},"这":{"docs":{},"是":{"docs":{},"另":{"docs":{},"一":{"docs":{},"种":{"docs":{},"将":{"docs":{},"“":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}},"e":{"docs":{},"v":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}},"i":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}},"w":{"docs":{},"c":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"使":{"docs":{},"用":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"存":{"docs":{},"储":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"所":{"docs":{},"加":{"docs":{},"载":{"docs":{},"的":{"docs":{},"新":{"docs":{},"内":{"docs":{},"存":{"docs":{},"映":{"docs":{},"像":{"docs":{},"替":{"docs":{},"换":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"。":{"docs":{},"(":{"docs":{},"百":{"docs":{},"度":{"docs":{},"百":{"docs":{},"科":{"docs":{},":":{"docs":{},"根":{"docs":{},"据":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"找":{"docs":{},"到":{"docs":{},"可":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"并":{"docs":{},"用":{"docs":{},"它":{"docs":{},"来":{"docs":{},"取":{"docs":{},"代":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},",":{"docs":{},"换":{"docs":{},"句":{"docs":{},"话":{"docs":{},"说":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"在":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"内":{"docs":{},"部":{"docs":{},"执":{"docs":{},"行":{"docs":{},"一":{"docs":{},"个":{"docs":{},"可":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},")":{"docs":{},"该":{"docs":{},"文":{"docs":{},"件":{"docs":{},"必":{"docs":{},"须":{"docs":{},"有":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"它":{"docs":{},"指":{"docs":{},"定":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"哪":{"docs":{},"部":{"docs":{},"分":{"docs":{},"存":{"docs":{},"放":{"docs":{},"指":{"docs":{},"令":{"docs":{},",":{"docs":{},"哪":{"docs":{},"部":{"docs":{},"分":{"docs":{},"是":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"以":{"docs":{},"及":{"docs":{},"哪":{"docs":{},"一":{"docs":{},"条":{"docs":{},"指":{"docs":{},"令":{"docs":{},"用":{"docs":{},"于":{"docs":{},"启":{"docs":{},"动":{"docs":{},"等":{"docs":{},"等":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"使":{"docs":{},"用":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{},"格":{"docs":{},"式":{"docs":{},"(":{"docs":{},"将":{"docs":{},"会":{"docs":{},"在":{"docs":{},"第":{"docs":{},"三":{"docs":{},"章":{"docs":{},"详":{"docs":{},"细":{"docs":{},"讨":{"docs":{},"论":{"docs":{},")":{"docs":{},"。":{"docs":{},"当":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"执":{"docs":{},"行":{"docs":{},"成":{"docs":{},"功":{"docs":{},",":{"docs":{},"它":{"docs":{},"不":{"docs":{},"向":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"返":{"docs":{},"回":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"使":{"docs":{},"加":{"docs":{},"载":{"docs":{},"自":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"指":{"docs":{},"令":{"docs":{},"在":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}},"(":{"0":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"1":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"导":{"docs":{},"致":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"停":{"docs":{},"止":{"docs":{},"执":{"docs":{},"行":{"docs":{},"并":{"docs":{},"释":{"docs":{},"放":{"docs":{},"资":{"docs":{},"源":{"docs":{},"(":{"docs":{},"如":{"docs":{},"内":{"docs":{},"存":{"docs":{},"和":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},")":{"docs":{},"。":{"docs":{},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"t":{"docs":{},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"整":{"docs":{},"数":{"docs":{},"状":{"docs":{},"态":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"通":{"docs":{},"常":{"0":{"docs":{},"表":{"docs":{},"示":{"docs":{},"成":{"docs":{},"功":{"docs":{},",":{"1":{"docs":{},"表":{"docs":{},"示":{"docs":{},"失":{"docs":{},"败":{"docs":{},"。":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"返":{"docs":{},"回":{"docs":{},"当":{"docs":{},"前":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"已":{"docs":{},"退":{"docs":{},"出":{"docs":{},"(":{"docs":{},"或":{"docs":{},"已":{"docs":{},"杀":{"docs":{},"死":{"docs":{},")":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"退":{"docs":{},"出":{"docs":{},"状":{"docs":{},"态":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"的":{"docs":{},"地":{"docs":{},"址":{"docs":{},";":{"docs":{},"如":{"docs":{},"果":{"docs":{},"调":{"docs":{},"用":{"docs":{},"方":{"docs":{},"的":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"都":{"docs":{},"没":{"docs":{},"有":{"docs":{},"退":{"docs":{},"出":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"等":{"docs":{},"待":{"docs":{},"一":{"docs":{},"个":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"退":{"docs":{},"出":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"调":{"docs":{},"用":{"docs":{},"者":{"docs":{},"没":{"docs":{},"有":{"docs":{},"子":{"docs":{},"级":{"docs":{},",":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"立":{"docs":{},"即":{"docs":{},"返":{"docs":{},"回":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.03896103896103896}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.16666666666666666},"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},",":{"docs":{},"表":{"docs":{},"示":{"docs":{},"进":{"docs":{},"程":{"docs":{},"可":{"docs":{},"以":{"docs":{},"读":{"docs":{},"取":{"docs":{},"或":{"docs":{},"写":{"docs":{},"入":{"docs":{},"的":{"docs":{},"由":{"docs":{},"内":{"docs":{},"核":{"docs":{},"管":{"docs":{},"理":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"进":{"docs":{},"程":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"打":{"docs":{},"开":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"、":{"docs":{},"目":{"docs":{},"录":{"docs":{},"、":{"docs":{},"设":{"docs":{},"备":{"docs":{},",":{"docs":{},"或":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"管":{"docs":{},"道":{"docs":{},",":{"docs":{},"或":{"docs":{},"复":{"docs":{},"制":{"docs":{},"一":{"docs":{},"个":{"docs":{},"已":{"docs":{},"存":{"docs":{},"在":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"来":{"docs":{},"获":{"docs":{},"得":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"简":{"docs":{},"单":{"docs":{},"起":{"docs":{},"见":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"通":{"docs":{},"常":{"docs":{},"将":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"所":{"docs":{},"指":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"称":{"docs":{},"为":{"docs":{},"“":{"docs":{},"文":{"docs":{},"件":{"docs":{},"”":{"docs":{},";":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"接":{"docs":{},"口":{"docs":{},"将":{"docs":{},"文":{"docs":{},"件":{"docs":{},"、":{"docs":{},"管":{"docs":{},"道":{"docs":{},"和":{"docs":{},"设":{"docs":{},"备":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"差":{"docs":{},"异":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"出":{"docs":{},"来":{"docs":{},",":{"docs":{},"使":{"docs":{},"它":{"docs":{},"们":{"docs":{},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"都":{"docs":{},"像":{"docs":{},"字":{"docs":{},"节":{"docs":{},"流":{"docs":{},"。":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"输":{"docs":{},"入":{"docs":{},"和":{"docs":{},"输":{"docs":{},"出":{"docs":{},"称":{"docs":{},"为":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}},"d":{"docs":{},"e":{"docs":{},"编":{"docs":{},"号":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}},"f":{"docs":{},"(":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955}}}}}}},"/":{"docs":{},"o":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":5.007692307692308}}}}}}}}}}},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"m":{"docs":{},"k":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"/":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"目":{"docs":{},"录":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"引":{"docs":{},"用":{"docs":{},"设":{"docs":{},"备":{"docs":{},"的":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"与":{"docs":{},"设":{"docs":{},"备":{"docs":{},"文":{"docs":{},"件":{"docs":{},"相":{"docs":{},"关":{"docs":{},"联":{"docs":{},"的":{"docs":{},"是":{"docs":{},"主":{"docs":{},"设":{"docs":{},"备":{"docs":{},"号":{"docs":{},"和":{"docs":{},"次":{"docs":{},"设":{"docs":{},"备":{"docs":{},"号":{"docs":{},"(":{"docs":{},"m":{"docs":{},"k":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"的":{"docs":{},"两":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},")":{"docs":{},",":{"docs":{},"它":{"docs":{},"们":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"地":{"docs":{},"标":{"docs":{},"识":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"内":{"docs":{},"核":{"docs":{},"设":{"docs":{},"备":{"docs":{},"。":{"docs":{},"当":{"docs":{},"进":{"docs":{},"程":{"docs":{},"稍":{"docs":{},"后":{"docs":{},"打":{"docs":{},"开":{"docs":{},"设":{"docs":{},"备":{"docs":{},"文":{"docs":{},"件":{"docs":{},"时":{"docs":{},",":{"docs":{},"内":{"docs":{},"核":{"docs":{},"将":{"docs":{},"使":{"docs":{},"用":{"docs":{},"内":{"docs":{},"核":{"docs":{},"设":{"docs":{},"备":{"docs":{},"实":{"docs":{},"现":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"和":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"使":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"新":{"docs":{},"的":{"docs":{},"设":{"docs":{},"备":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.028985507246376812},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"o":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}},"/":{"docs":{},"a":{"docs":{},"/":{"docs":{},"b":{"docs":{},"/":{"docs":{},"c":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"/":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"x":{"docs":{},"y":{"docs":{},"z":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}},"a":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}},"c":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"的":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"由":{"docs":{},"一":{"docs":{},"组":{"docs":{},"标":{"docs":{},"志":{"docs":{},"组":{"docs":{},"成":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"标":{"docs":{},"志":{"docs":{},"以":{"docs":{},"位":{"docs":{},"表":{"docs":{},"示":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"控":{"docs":{},"制":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"可":{"docs":{},"能":{"docs":{},"的":{"docs":{},"值":{"docs":{},"定":{"docs":{},"义":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"控":{"docs":{},"制":{"docs":{},"(":{"docs":{},"f":{"docs":{},"c":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},")":{"docs":{},"头":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},"/":{"docs":{},"f":{"docs":{},"c":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},".":{"docs":{},"h":{"docs":{},":":{"1":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"中":{"docs":{},"若":{"docs":{},"使":{"docs":{},"用":{"docs":{},"o":{"docs":{},"_":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"标":{"docs":{},"志":{"docs":{},"将":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"x":{"docs":{},"、":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{},"甚":{"docs":{},"至":{"docs":{},"在":{"docs":{},"一":{"docs":{},"定":{"docs":{},"程":{"docs":{},"度":{"docs":{},"上":{"docs":{},",":{"docs":{},"m":{"docs":{},"i":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.03333333333333333}}}}}}},"r":{"docs":{},"d":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"y":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.022222222222222223}}}}}}}},"w":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}},"w":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"y":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.022222222222222223}}}}}}}}}}}},"p":{"docs":{},"[":{"2":{"docs":{},"]":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}},"docs":{},"]":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"i":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955}}}}},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"p":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955}}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"f":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"”":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"节":{"docs":{},"(":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"像":{"docs":{},"打":{"docs":{},"乒":{"docs":{},"乓":{"docs":{},"球":{"docs":{},"一":{"docs":{},"样":{"docs":{},"来":{"docs":{},"回":{"docs":{},"传":{"docs":{},"递":{"docs":{},")":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"方":{"docs":{},"向":{"docs":{},"一":{"docs":{},"个":{"docs":{},"管":{"docs":{},"道":{"docs":{},"。":{"docs":{},"以":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"的":{"docs":{},"交":{"docs":{},"换":{"docs":{},"次":{"docs":{},"数":{"docs":{},"为":{"docs":{},"单":{"docs":{},"位":{"docs":{},",":{"docs":{},"测":{"docs":{},"量":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"性":{"docs":{},"能":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_6.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_6.html","tf":0.25}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"是":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"一":{"docs":{},"个":{"docs":{},"普":{"docs":{},"通":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"它":{"docs":{},"从":{"docs":{},"用":{"docs":{},"户":{"docs":{},"那":{"docs":{},"里":{"docs":{},"读":{"docs":{},"取":{"docs":{},"命":{"docs":{},"令":{"docs":{},"并":{"docs":{},"执":{"docs":{},"行":{"docs":{},"它":{"docs":{},"们":{"docs":{},"。":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"内":{"docs":{},"核":{"docs":{},"的":{"docs":{},"一":{"docs":{},"部":{"docs":{},"分":{"docs":{},",":{"docs":{},"这":{"docs":{},"一":{"docs":{},"事":{"docs":{},"实":{"docs":{},"说":{"docs":{},"明":{"docs":{},"了":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"强":{"docs":{},"大":{"docs":{},"之":{"docs":{},"处":{"docs":{},":":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"没":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"特":{"docs":{},"别":{"docs":{},"之":{"docs":{},"处":{"docs":{},"。":{"docs":{},"这":{"docs":{},"也":{"docs":{},"意":{"docs":{},"味":{"docs":{},"着":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"很":{"docs":{},"容":{"docs":{},"易":{"docs":{},"替":{"docs":{},"换":{"docs":{},";":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"现":{"docs":{},"代":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"系":{"docs":{},"统":{"docs":{},"有":{"docs":{},"多":{"docs":{},"种":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"可":{"docs":{},"供":{"docs":{},"选":{"docs":{},"择":{"docs":{},",":{"docs":{},"每":{"docs":{},"种":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"都":{"docs":{},"有":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"界":{"docs":{},"面":{"docs":{},"和":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"特":{"docs":{},"性":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"本":{"docs":{},"质":{"docs":{},"的":{"docs":{},"简":{"docs":{},"单":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{},"它":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"1":{"docs":{},")":{"docs":{},"中":{"docs":{},"找":{"docs":{},"到":{"docs":{},".":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"错":{"docs":{},"误":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"的":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"现":{"docs":{},"在":{"docs":{},"你":{"docs":{},"知":{"docs":{},"道":{"docs":{},"如":{"docs":{},"何":{"docs":{},"实":{"docs":{},"现":{"docs":{},"它":{"docs":{},"了":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"以":{"docs":{},"类":{"docs":{},"似":{"docs":{},"于":{"docs":{},"上":{"docs":{},"面":{"docs":{},"代":{"docs":{},"码":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"1":{"0":{"0":{"docs":{},")":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"实":{"docs":{},"现":{"docs":{},"了":{"docs":{},"诸":{"docs":{},"如":{"docs":{},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.022222222222222223}}}}}},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"t":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"a":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}},"u":{"docs":{},"s":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"在":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"h":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{},"h":{"docs":{},")":{"docs":{},"中":{"docs":{},"定":{"docs":{},"义":{"docs":{},"为":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.014492753623188406},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"b":{"docs":{},"r":{"docs":{},"k":{"docs":{},"(":{"docs":{},"n":{"docs":{},")":{"docs":{},"将":{"docs":{},"其":{"docs":{},"数":{"docs":{},"据":{"docs":{},"内":{"docs":{},"存":{"docs":{},"增":{"docs":{},"加":{"docs":{},"n":{"docs":{},"个":{"docs":{},"字":{"docs":{},"节":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}},"返":{"docs":{},"回":{"docs":{},"新":{"docs":{},"内":{"docs":{},"存":{"docs":{},"的":{"docs":{},"位":{"docs":{},"置":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"和":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"n":{"docs":{},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}},"m":{"docs":{},"p":{"1":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"docs":{}}},"_":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}},"i":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"u":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"\"":{"docs":{},"/":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"x":{"docs":{},"y":{"docs":{},"z":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"删":{"docs":{},"除":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"称":{"docs":{},"。":{"docs":{},"只":{"docs":{},"有":{"docs":{},"当":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"链":{"docs":{},"接":{"docs":{},"数":{"docs":{},"为":{"docs":{},"零":{"docs":{},"且":{"docs":{},"没":{"docs":{},"有":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"引":{"docs":{},"用":{"docs":{},"时":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"和":{"docs":{},"包":{"docs":{},"含":{"docs":{},"其":{"docs":{},"内":{"docs":{},"容":{"docs":{},"的":{"docs":{},"磁":{"docs":{},"盘":{"docs":{},"空":{"docs":{},"间":{"docs":{},"才":{"docs":{},"会":{"docs":{},"被":{"docs":{},"释":{"docs":{},"放":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"添":{"docs":{},"加":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"x":{"docs":{},"以":{"docs":{},"用":{"docs":{},"户":{"docs":{},"级":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"可":{"docs":{},"从":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"实":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"m":{"docs":{},"k":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"、":{"docs":{},"l":{"docs":{},"n":{"docs":{},"和":{"docs":{},"r":{"docs":{},"m":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"设":{"docs":{},"计":{"docs":{},"允":{"docs":{},"许":{"docs":{},"任":{"docs":{},"何":{"docs":{},"人":{"docs":{},"通":{"docs":{},"过":{"docs":{},"添":{"docs":{},"加":{"docs":{},"新":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"级":{"docs":{},"程":{"docs":{},"序":{"docs":{},"来":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"事":{"docs":{},"后":{"docs":{},"看":{"docs":{},"来":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"计":{"docs":{},"划":{"docs":{},"似":{"docs":{},"乎":{"docs":{},"是":{"docs":{},"显":{"docs":{},"而":{"docs":{},"易":{"docs":{},"见":{"docs":{},"的":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"在":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"时":{"docs":{},"代":{"docs":{},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"其":{"docs":{},"他":{"docs":{},"系":{"docs":{},"统":{"docs":{},"经":{"docs":{},"常":{"docs":{},"将":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"构":{"docs":{},"建":{"docs":{},"到":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"中":{"docs":{},"(":{"docs":{},"并":{"docs":{},"将":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"构":{"docs":{},"建":{"docs":{},"到":{"docs":{},"内":{"docs":{},"核":{"docs":{},"中":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"“":{"docs":{},"标":{"docs":{},"准":{"docs":{},"”":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"、":{"docs":{},"管":{"docs":{},"道":{"docs":{},"和":{"docs":{},"方":{"docs":{},"便":{"docs":{},"的":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"语":{"docs":{},"法":{"docs":{},"结":{"docs":{},"合":{"docs":{},"起":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"编":{"docs":{},"写":{"docs":{},"通":{"docs":{},"用":{"docs":{},"可":{"docs":{},"重":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"方":{"docs":{},"面":{"docs":{},"的":{"docs":{},"一":{"docs":{},"大":{"docs":{},"进":{"docs":{},"步":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"想":{"docs":{},"法":{"docs":{},"引":{"docs":{},"发":{"docs":{},"了":{"docs":{},"一":{"docs":{},"种":{"docs":{},"“":{"docs":{},"软":{"docs":{},"件":{"docs":{},"工":{"docs":{},"具":{"docs":{},"”":{"docs":{},"的":{"docs":{},"文":{"docs":{},"化":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"文":{"docs":{},"化":{"docs":{},"对":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"强":{"docs":{},"大":{"docs":{},"和":{"docs":{},"流":{"docs":{},"行":{"docs":{},"做":{"docs":{},"出":{"docs":{},"了":{"docs":{},"卓":{"docs":{},"越":{"docs":{},"贡":{"docs":{},"献":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"是":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"所":{"docs":{},"谓":{"docs":{},"的":{"docs":{},"“":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"语":{"docs":{},"言":{"docs":{},"”":{"docs":{},"。":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"接":{"docs":{},"口":{"docs":{},"今":{"docs":{},"天":{"docs":{},"仍":{"docs":{},"然":{"docs":{},"存":{"docs":{},"在":{"docs":{},"于":{"docs":{},"b":{"docs":{},"s":{"docs":{},"d":{"docs":{},"、":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"和":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{},"o":{"docs":{},"s":{"docs":{},"x":{"docs":{},"等":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"接":{"docs":{},"口":{"docs":{},"已":{"docs":{},"经":{"docs":{},"通":{"docs":{},"过":{"docs":{},"便":{"docs":{},"携":{"docs":{},"式":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"接":{"docs":{},"口":{"docs":{},"(":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"x":{"docs":{},")":{"docs":{},"标":{"docs":{},"准":{"docs":{},"进":{"docs":{},"行":{"docs":{},"了":{"docs":{},"标":{"docs":{},"准":{"docs":{},"化":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"与":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"x":{"docs":{},"不":{"docs":{},"兼":{"docs":{},"容":{"docs":{},":":{"docs":{},"它":{"docs":{},"缺":{"docs":{},"少":{"docs":{},"许":{"docs":{},"多":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"(":{"docs":{},"包":{"docs":{},"括":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"e":{"docs":{},"k":{"docs":{},"等":{"docs":{},"基":{"docs":{},"本":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},")":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"它":{"docs":{},"提":{"docs":{},"供":{"docs":{},"的":{"docs":{},"许":{"docs":{},"多":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"与":{"docs":{},"标":{"docs":{},"准":{"docs":{},"不":{"docs":{},"同":{"docs":{},"。":{"docs":{},"我":{"docs":{},"们":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"的":{"docs":{},"主":{"docs":{},"要":{"docs":{},"目":{"docs":{},"标":{"docs":{},"是":{"docs":{},"简":{"docs":{},"单":{"docs":{},"明":{"docs":{},"了":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"提":{"docs":{},"供":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"类":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"运":{"docs":{},"行":{"docs":{},"基":{"docs":{},"本":{"docs":{},"的":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"有":{"docs":{},"些":{"docs":{},"人":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},",":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"一":{"docs":{},"些":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"和":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"c":{"docs":{},"库":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},",":{"docs":{},"现":{"docs":{},"代":{"docs":{},"内":{"docs":{},"核":{"docs":{},"比":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"和":{"docs":{},"更":{"docs":{},"多":{"docs":{},"种":{"docs":{},"类":{"docs":{},"的":{"docs":{},"内":{"docs":{},"核":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"它":{"docs":{},"们":{"docs":{},"支":{"docs":{},"持":{"docs":{},"网":{"docs":{},"络":{"docs":{},"工":{"docs":{},"作":{"docs":{},"、":{"docs":{},"窗":{"docs":{},"口":{"docs":{},"系":{"docs":{},"统":{"docs":{},"、":{"docs":{},"用":{"docs":{},"户":{"docs":{},"级":{"docs":{},"线":{"docs":{},"程":{"docs":{},"、":{"docs":{},"许":{"docs":{},"多":{"docs":{},"设":{"docs":{},"备":{"docs":{},"的":{"docs":{},"驱":{"docs":{},"动":{"docs":{},"程":{"docs":{},"序":{"docs":{},"等":{"docs":{},"等":{"docs":{},"。":{"docs":{},"现":{"docs":{},"代":{"docs":{},"内":{"docs":{},"核":{"docs":{},"不":{"docs":{},"断":{"docs":{},"快":{"docs":{},"速":{"docs":{},"发":{"docs":{},"展":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"许":{"docs":{},"多":{"docs":{},"超":{"docs":{},"越":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"特":{"docs":{},"性":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"组":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"接":{"docs":{},"口":{"docs":{},"统":{"docs":{},"一":{"docs":{},"访":{"docs":{},"问":{"docs":{},"多":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"(":{"docs":{},"文":{"docs":{},"件":{"docs":{},"、":{"docs":{},"目":{"docs":{},"录":{"docs":{},"和":{"docs":{},"设":{"docs":{},"备":{"docs":{},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"想":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"到":{"docs":{},"更":{"docs":{},"多":{"docs":{},"种":{"docs":{},"类":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},";":{"docs":{},"一":{"docs":{},"个":{"docs":{},"很":{"docs":{},"好":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"是":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"9":{"docs":{},",":{"docs":{},"它":{"docs":{},"将":{"docs":{},"“":{"docs":{},"资":{"docs":{},"源":{"docs":{},"是":{"docs":{},"文":{"docs":{},"件":{"docs":{},"”":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},"应":{"docs":{},"用":{"docs":{},"到":{"docs":{},"网":{"docs":{},"络":{"docs":{},"、":{"docs":{},"图":{"docs":{},"形":{"docs":{},"等":{"docs":{},"等":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},",":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"衍":{"docs":{},"生":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"这":{"docs":{},"条":{"docs":{},"路":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"6":{"4":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}},"docs":{}},"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"0":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{},"都":{"docs":{},"有":{"docs":{},"类":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"理":{"docs":{},"解":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"是":{"docs":{},"理":{"docs":{},"解":{"docs":{},"这":{"docs":{},"些":{"docs":{},"系":{"docs":{},"统":{"docs":{},"和":{"docs":{},"其":{"docs":{},"他":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"良":{"docs":{},"好":{"docs":{},"开":{"docs":{},"端":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"1":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.023076923076923078}}}},"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"f":{"docs":{},"d":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"p":{"docs":{},"[":{"1":{"docs":{},"]":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}},"docs":{}}}},")":{"docs":{},"优":{"docs":{},"化":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"l":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976}},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"”":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}},"。":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"的":{"docs":{},"写":{"docs":{},"操":{"docs":{},"作":{"docs":{},"(":{"docs":{},"由":{"docs":{},"于":{"docs":{},"等":{"docs":{},"待":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"在":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"完":{"docs":{},"成":{"docs":{},"后":{"docs":{},"才":{"docs":{},"运":{"docs":{},"行":{"docs":{},")":{"docs":{},"在":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"停":{"docs":{},"止":{"docs":{},"写":{"docs":{},"入":{"docs":{},"的":{"docs":{},"位":{"docs":{},"置":{"docs":{},"进":{"docs":{},"行":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"行":{"docs":{},"为":{"docs":{},"有":{"docs":{},"助":{"docs":{},"于":{"docs":{},"从":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"命":{"docs":{},"令":{"docs":{},"序":{"docs":{},"列":{"docs":{},"产":{"docs":{},"生":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"输":{"docs":{},"出":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"(":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.03896103896103896}},"将":{"docs":{},"不":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"输":{"docs":{},"出":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"当":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}},"​":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"个":{"docs":{},"字":{"docs":{},"节":{"docs":{},"到":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"f":{"docs":{},"d":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}},"读":{"docs":{},"入":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},";":{"docs":{},"返":{"docs":{},"回":{"docs":{},"读":{"docs":{},"取":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},";":{"docs":{},"如":{"docs":{},"果":{"docs":{},"文":{"docs":{},"件":{"docs":{},"结":{"docs":{},"束":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{},"文":{"docs":{},"件":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"1":{"docs":{},"创":{"docs":{},"建":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"称":{"docs":{},"(":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"2":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"docs":{}}}}}}}}}}}}}},"docs":{}}}}}}}},"介":{"docs":{},"绍":{"docs":{},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"模":{"docs":{},"仿":{"docs":{},"了":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"内":{"docs":{},"部":{"docs":{},"设":{"docs":{},"计":{"docs":{},"。":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"窄":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"其":{"docs":{},"机":{"docs":{},"制":{"docs":{},"表":{"docs":{},"现":{"docs":{},"突":{"docs":{},"出":{"docs":{},",":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"令":{"docs":{},"人":{"docs":{},"惊":{"docs":{},"讶":{"docs":{},"的":{"docs":{},"通":{"docs":{},"用":{"docs":{},"程":{"docs":{},"度":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},"非":{"docs":{},"常":{"docs":{},"成":{"docs":{},"功":{"docs":{},",":{"docs":{},"甚":{"docs":{},"至":{"docs":{},"现":{"docs":{},"代":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"b":{"docs":{},"s":{"docs":{},"d":{"docs":{},"、":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"、":{"docs":{},"m":{"docs":{},"a":{"docs":{},"c":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"从":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"a":{"docs":{},"读":{"docs":{},"取":{"docs":{},"或":{"docs":{},"写":{"docs":{},"入":{"docs":{},"与":{"docs":{},"从":{"docs":{},"b":{"docs":{},"读":{"docs":{},"取":{"docs":{},"或":{"docs":{},"写":{"docs":{},"入":{"docs":{},"是":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"每":{"docs":{},"个":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"由":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"编":{"docs":{},"号":{"docs":{},"标":{"docs":{},"识":{"docs":{},"。":{"docs":{},"在":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"序":{"docs":{},"列":{"docs":{},"之":{"docs":{},"后":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"检":{"docs":{},"查":{"docs":{},"f":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"来":{"docs":{},"确":{"docs":{},"定":{"docs":{},"a":{"docs":{},"和":{"docs":{},"b":{"docs":{},"引":{"docs":{},"用":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"底":{"docs":{},"层":{"docs":{},"内":{"docs":{},"容":{"docs":{},":":{"docs":{},"两":{"docs":{},"者":{"docs":{},"都":{"docs":{},"将":{"docs":{},"返":{"docs":{},"回":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"号":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},")":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"计":{"docs":{},"数":{"docs":{},"将":{"docs":{},"被":{"docs":{},"设":{"docs":{},"置":{"docs":{},"为":{"2":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"内":{"docs":{},"核":{"docs":{},"使":{"docs":{},"用":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"提":{"docs":{},"供":{"docs":{},"的":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"保":{"docs":{},"护":{"docs":{},"机":{"docs":{},"制":{"docs":{},"来":{"docs":{},"确":{"docs":{},"保":{"docs":{},"每":{"docs":{},"个":{"docs":{},"在":{"docs":{},"用":{"docs":{},"户":{"docs":{},"空":{"docs":{},"间":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"只":{"docs":{},"能":{"docs":{},"访":{"docs":{},"问":{"docs":{},"它":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"。":{"docs":{},"内":{"docs":{},"核":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"操":{"docs":{},"控":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"的":{"docs":{},"权":{"docs":{},"限":{"docs":{},",":{"docs":{},"它":{"docs":{},"需":{"docs":{},"要":{"docs":{},"实":{"docs":{},"现":{"docs":{},"这":{"docs":{},"些":{"docs":{},"保":{"docs":{},"护":{"docs":{},";":{"docs":{},"而":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},"执":{"docs":{},"行":{"docs":{},"时":{"docs":{},"没":{"docs":{},"有":{"docs":{},"这":{"docs":{},"些":{"docs":{},"特":{"docs":{},"权":{"docs":{},"。":{"docs":{},"当":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},"调":{"docs":{},"用":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"时":{"docs":{},",":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"会":{"docs":{},"提":{"docs":{},"升":{"docs":{},"权":{"docs":{},"限":{"docs":{},"级":{"docs":{},"别":{"docs":{},",":{"docs":{},"并":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"内":{"docs":{},"核":{"docs":{},"中":{"docs":{},"预":{"docs":{},"先":{"docs":{},"安":{"docs":{},"排":{"docs":{},"好":{"docs":{},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"提":{"docs":{},"供":{"docs":{},"的":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"集":{"docs":{},"合":{"docs":{},"是":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"内":{"docs":{},"核":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"内":{"docs":{},"核":{"docs":{},"传":{"docs":{},"统":{"docs":{},"上":{"docs":{},"提":{"docs":{},"供":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"和":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"子":{"docs":{},"集":{"docs":{},"。":{"docs":{},"表":{"1":{"docs":{},".":{"2":{"docs":{},"列":{"docs":{},"出":{"docs":{},"了":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}},"docs":{}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"写":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"目":{"docs":{},"录":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"管":{"docs":{},"道":{"docs":{},",":{"docs":{},"把":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"放":{"docs":{},"在":{"docs":{},"p":{"docs":{},"[":{"0":{"docs":{},"]":{"docs":{},"和":{"docs":{},"p":{"docs":{},"[":{"1":{"docs":{},"]":{"docs":{},"中":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}},"docs":{}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"备":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}},"删":{"docs":{},"除":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}},"加":{"docs":{},"载":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"并":{"docs":{},"使":{"docs":{},"用":{"docs":{},"参":{"docs":{},"数":{"docs":{},"执":{"docs":{},"行":{"docs":{},"它":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}},"只":{"docs":{},"有":{"docs":{},"在":{"docs":{},"出":{"docs":{},"错":{"docs":{},"时":{"docs":{},"才":{"docs":{},"返":{"docs":{},"回":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"写":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}},"读":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},"如":{"docs":{},"图":{"1":{"docs":{},".":{"1":{"docs":{},"所":{"docs":{},"示":{"docs":{},",":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"采":{"docs":{},"用":{"docs":{},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"内":{"docs":{},"核":{"docs":{},"形":{"docs":{},"式":{"docs":{},"(":{"docs":{},"内":{"docs":{},"核":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"为":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"提":{"docs":{},"供":{"docs":{},"服":{"docs":{},"务":{"docs":{},")":{"docs":{},"。":{"docs":{},"每":{"docs":{},"个":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"称":{"docs":{},"为":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"都":{"docs":{},"有":{"docs":{},"包":{"docs":{},"含":{"docs":{},"指":{"docs":{},"令":{"docs":{},"、":{"docs":{},"数":{"docs":{},"据":{"docs":{},"和":{"docs":{},"堆":{"docs":{},"栈":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"。":{"docs":{},"指":{"docs":{},"令":{"docs":{},"实":{"docs":{},"现":{"docs":{},"了":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"运":{"docs":{},"算":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"是":{"docs":{},"计":{"docs":{},"算":{"docs":{},"所":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"的":{"docs":{},"变":{"docs":{},"量":{"docs":{},",":{"docs":{},"堆":{"docs":{},"栈":{"docs":{},"组":{"docs":{},"织":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"过":{"docs":{},"程":{"docs":{},"调":{"docs":{},"用":{"docs":{},"。":{"docs":{},"一":{"docs":{},"台":{"docs":{},"给":{"docs":{},"定":{"docs":{},"的":{"docs":{},"计":{"docs":{},"算":{"docs":{},"机":{"docs":{},"通":{"docs":{},"常":{"docs":{},"有":{"docs":{},"许":{"docs":{},"多":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"但":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"内":{"docs":{},"核":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"docs":{}}},"docs":{}},"果":{"docs":{},"两":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"和":{"docs":{},"d":{"docs":{},"u":{"docs":{},"p":{"docs":{},"调":{"docs":{},"用":{"docs":{},"从":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"原":{"docs":{},"始":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"派":{"docs":{},"生":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"它":{"docs":{},"们":{"docs":{},"共":{"docs":{},"享":{"docs":{},"一":{"docs":{},"个":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"。":{"docs":{},"否":{"docs":{},"则":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"不":{"docs":{},"会":{"docs":{},"共":{"docs":{},"享":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"它":{"docs":{},"们":{"docs":{},"来":{"docs":{},"自":{"docs":{},"于":{"docs":{},"对":{"docs":{},"同":{"docs":{},"一":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"打":{"docs":{},"开":{"docs":{},"调":{"docs":{},"用":{"docs":{},"。":{"docs":{},"d":{"docs":{},"u":{"docs":{},"p":{"docs":{},"允":{"docs":{},"许":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"执":{"docs":{},"行":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},":":{"docs":{},"l":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"则":{"docs":{},"创":{"docs":{},"建":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}},"没":{"docs":{},"有":{"docs":{},"可":{"docs":{},"用":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"则":{"docs":{},"管":{"docs":{},"道":{"docs":{},"上":{"docs":{},"的":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"操":{"docs":{},"作":{"docs":{},"等":{"docs":{},"待":{"docs":{},"写":{"docs":{},"入":{"docs":{},"数":{"docs":{},"据":{"docs":{},"或":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"所":{"docs":{},"有":{"docs":{},"指":{"docs":{},"向":{"docs":{},"写":{"docs":{},"入":{"docs":{},"端":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"在":{"docs":{},"后":{"docs":{},"一":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"将":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{},",":{"docs":{},"就":{"docs":{},"像":{"docs":{},"到":{"docs":{},"达":{"docs":{},"数":{"docs":{},"据":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"末":{"docs":{},"尾":{"docs":{},"一":{"docs":{},"样":{"docs":{},"。":{"docs":{},"事":{"docs":{},"实":{"docs":{},"上":{"docs":{},",":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"在":{"docs":{},"新":{"docs":{},"数":{"docs":{},"据":{"docs":{},"不":{"docs":{},"可":{"docs":{},"能":{"docs":{},"到":{"docs":{},"达":{"docs":{},"前":{"docs":{},"会":{"docs":{},"一":{"docs":{},"直":{"docs":{},"阻":{"docs":{},"塞":{"docs":{},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"在":{"docs":{},"执":{"docs":{},"行":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"w":{"docs":{},"c":{"docs":{},"之":{"docs":{},"前":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"写":{"docs":{},"入":{"docs":{},"端":{"docs":{},"非":{"docs":{},"常":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"原":{"docs":{},"因":{"docs":{},":":{"docs":{},"如":{"docs":{},"果":{"docs":{},"w":{"docs":{},"c":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"之":{"docs":{},"一":{"docs":{},"指":{"docs":{},"向":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"写":{"docs":{},"入":{"docs":{},"端":{"docs":{},",":{"docs":{},"w":{"docs":{},"c":{"docs":{},"将":{"docs":{},"永":{"docs":{},"远":{"docs":{},"看":{"docs":{},"不":{"docs":{},"到":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"结":{"docs":{},"束":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"字":{"docs":{},"节":{"docs":{},"增":{"docs":{},"长":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"。":{"docs":{},"返":{"docs":{},"回":{"docs":{},"新":{"docs":{},"内":{"docs":{},"存":{"docs":{},"的":{"docs":{},"开":{"docs":{},"始":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"打":{"docs":{},"开":{"docs":{},"文":{"docs":{},"件":{"docs":{},"f":{"docs":{},"d":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"放":{"docs":{},"入":{"docs":{},"*":{"docs":{},"s":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"信":{"docs":{},"息":{"docs":{},"放":{"docs":{},"入":{"docs":{},"*":{"docs":{},"s":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}},"退":{"docs":{},"出":{"docs":{},"状":{"docs":{},"态":{"docs":{},"存":{"docs":{},"入":{"docs":{},"*":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}},"以":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}},"文":{"docs":{},"件":{"docs":{},"截":{"docs":{},"断":{"docs":{},"为":{"docs":{},"零":{"docs":{},"长":{"docs":{},"度":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}},"当":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"需":{"docs":{},"要":{"docs":{},"调":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"内":{"docs":{},"核":{"docs":{},"服":{"docs":{},"务":{"docs":{},"时":{"docs":{},",":{"docs":{},"它":{"docs":{},"会":{"docs":{},"调":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"接":{"docs":{},"口":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"调":{"docs":{},"用":{"docs":{},"。":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"入":{"docs":{},"内":{"docs":{},"核":{"docs":{},";":{"docs":{},"内":{"docs":{},"核":{"docs":{},"执":{"docs":{},"行":{"docs":{},"服":{"docs":{},"务":{"docs":{},"并":{"docs":{},"返":{"docs":{},"回":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"在":{"docs":{},"用":{"docs":{},"户":{"docs":{},"空":{"docs":{},"间":{"docs":{},"和":{"docs":{},"内":{"docs":{},"核":{"docs":{},"空":{"docs":{},"间":{"docs":{},"之":{"docs":{},"间":{"docs":{},"交":{"docs":{},"替":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"打":{"docs":{},"开":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},";":{"docs":{},"f":{"docs":{},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{},"s":{"docs":{},"表":{"docs":{},"示":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},";":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"f":{"docs":{},"d":{"docs":{},"(":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"按":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"描":{"docs":{},"述":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"接":{"docs":{},"口":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":5.007246376811594}}}},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"是":{"docs":{},"在":{"docs":{},"多":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"之":{"docs":{},"间":{"docs":{},"共":{"docs":{},"享":{"docs":{},"一":{"docs":{},"台":{"docs":{},"计":{"docs":{},"算":{"docs":{},"机":{"docs":{},",":{"docs":{},"并":{"docs":{},"提":{"docs":{},"供":{"docs":{},"比":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"本":{"docs":{},"身":{"docs":{},"支":{"docs":{},"持":{"docs":{},"的":{"docs":{},"更":{"docs":{},"有":{"docs":{},"用":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"管":{"docs":{},"理":{"docs":{},"和":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"底":{"docs":{},"层":{"docs":{},"硬":{"docs":{},"件":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"文":{"docs":{},"字":{"docs":{},"处":{"docs":{},"理":{"docs":{},"器":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"关":{"docs":{},"心":{"docs":{},"使":{"docs":{},"用":{"docs":{},"哪":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"磁":{"docs":{},"盘":{"docs":{},"硬":{"docs":{},"件":{"docs":{},"。":{"docs":{},"一":{"docs":{},"个":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"在":{"docs":{},"多":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"之":{"docs":{},"间":{"docs":{},"共":{"docs":{},"享":{"docs":{},"硬":{"docs":{},"件":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"它":{"docs":{},"们":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"(":{"docs":{},"或":{"docs":{},"者":{"docs":{},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"可":{"docs":{},"以":{"docs":{},")":{"docs":{},"同":{"docs":{},"时":{"docs":{},"运":{"docs":{},"行":{"docs":{},"。":{"docs":{},"最":{"docs":{},"后":{"docs":{},",":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"为":{"docs":{},"程":{"docs":{},"序":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"可":{"docs":{},"控":{"docs":{},"的":{"docs":{},"交":{"docs":{},"互":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"它":{"docs":{},"们":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"共":{"docs":{},"享":{"docs":{},"数":{"docs":{},"据":{"docs":{},"或":{"docs":{},"者":{"docs":{},"一":{"docs":{},"起":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"接":{"docs":{},"口":{"docs":{},"向":{"docs":{},"用":{"docs":{},"户":{"docs":{},"程":{"docs":{},"序":{"docs":{},"提":{"docs":{},"供":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{},"设":{"docs":{},"计":{"docs":{},"良":{"docs":{},"好":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"是":{"docs":{},"很":{"docs":{},"困":{"docs":{},"难":{"docs":{},"的":{"docs":{},"。":{"docs":{},"一":{"docs":{},"方":{"docs":{},"面":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"希":{"docs":{},"望":{"docs":{},"接":{"docs":{},"口":{"docs":{},"简":{"docs":{},"单":{"docs":{},"明":{"docs":{},"了":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"这":{"docs":{},"样":{"docs":{},"更":{"docs":{},"利":{"docs":{},"于":{"docs":{},"正":{"docs":{},"确":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{},"另":{"docs":{},"一":{"docs":{},"方":{"docs":{},"面":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"可":{"docs":{},"能":{"docs":{},"倾":{"docs":{},"向":{"docs":{},"于":{"docs":{},"为":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"提":{"docs":{},"供":{"docs":{},"许":{"docs":{},"多":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"特":{"docs":{},"性":{"docs":{},"。":{"docs":{},"解":{"docs":{},"决":{"docs":{},"这":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},"的":{"docs":{},"诀":{"docs":{},"窍":{"docs":{},"在":{"docs":{},"于":{"docs":{},"设":{"docs":{},"计":{"docs":{},"接":{"docs":{},"口":{"docs":{},"时":{"docs":{},",":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"一":{"docs":{},"些":{"docs":{},"可":{"docs":{},"结":{"docs":{},"合":{"docs":{},"的":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"以":{"docs":{},"此":{"docs":{},"来":{"docs":{},"提":{"docs":{},"供":{"docs":{},"更":{"docs":{},"好":{"docs":{},"的":{"docs":{},"通":{"docs":{},"用":{"docs":{},"性":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"改":{"docs":{},"变":{"docs":{},"当":{"docs":{},"前":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}},"暂":{"docs":{},"停":{"docs":{},"n":{"docs":{},"个":{"docs":{},"时":{"docs":{},"钟":{"docs":{},"节":{"docs":{},"拍":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}},"第":{"docs":{},"一":{"docs":{},"章":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":5.007246376811594}}}},"三":{"docs":{},",":{"docs":{},"管":{"docs":{},"道":{"docs":{},"允":{"docs":{},"许":{"docs":{},"并":{"docs":{},"行":{"docs":{},"执":{"docs":{},"行":{"docs":{},"管":{"docs":{},"道":{"docs":{},"阶":{"docs":{},"段":{"docs":{},",":{"docs":{},"而":{"docs":{},"文":{"docs":{},"件":{"docs":{},"方":{"docs":{},"法":{"docs":{},"要":{"docs":{},"求":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"在":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"启":{"docs":{},"动":{"docs":{},"之":{"docs":{},"前":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"四":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"实":{"docs":{},"现":{"docs":{},"进":{"docs":{},"程":{"docs":{},"间":{"docs":{},"通":{"docs":{},"讯":{"docs":{},",":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"块":{"docs":{},"读":{"docs":{},"写":{"docs":{},"比":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"非":{"docs":{},"块":{"docs":{},"语":{"docs":{},"义":{"docs":{},"更":{"docs":{},"有":{"docs":{},"效":{"docs":{},"率":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"等":{"docs":{},"待":{"docs":{},"一":{"docs":{},"个":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"退":{"docs":{},"出":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"f":{"docs":{},"d":{"docs":{},",":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},",":{"docs":{},"n":{"docs":{},")":{"docs":{},"将":{"docs":{},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},"中":{"docs":{},"的":{"docs":{},"n":{"docs":{},"字":{"docs":{},"节":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"并":{"docs":{},"返":{"docs":{},"回":{"docs":{},"写":{"docs":{},"入":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},"。":{"docs":{},"只":{"docs":{},"有":{"docs":{},"发":{"docs":{},"生":{"docs":{},"错":{"docs":{},"误":{"docs":{},"时":{"docs":{},"才":{"docs":{},"会":{"docs":{},"写":{"docs":{},"入":{"docs":{},"小":{"docs":{},"于":{"docs":{},"n":{"docs":{},"字":{"docs":{},"节":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{},"与":{"docs":{},"读":{"docs":{},"一":{"docs":{},"样":{"docs":{},",":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"在":{"docs":{},"当":{"docs":{},"前":{"docs":{},"文":{"docs":{},"件":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"处":{"docs":{},"写":{"docs":{},"入":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"将":{"docs":{},"该":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"向":{"docs":{},"前":{"docs":{},"推":{"docs":{},"进":{"docs":{},"写":{"docs":{},"入":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},":":{"docs":{},"每":{"docs":{},"个":{"docs":{},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"从":{"docs":{},"上":{"docs":{},"一":{"docs":{},"个":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"停":{"docs":{},"止":{"docs":{},"的":{"docs":{},"地":{"docs":{},"方":{"docs":{},"开":{"docs":{},"始":{"docs":{},"写":{"docs":{},"入":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"终":{"docs":{},"止":{"docs":{},"对":{"docs":{},"应":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{},",":{"docs":{},"或":{"docs":{},"返":{"docs":{},"回":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}},"docs":{}}}}}}}}}}}},"当":{"docs":{},"前":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{},"状":{"docs":{},"态":{"docs":{},"报":{"docs":{},"告":{"docs":{},"给":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{},"无":{"docs":{},"返":{"docs":{},"回":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}}}}}}}}}}}}},"表":{"1":{"docs":{},".":{"2":{"docs":{},":":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"(":{"docs":{},"除":{"docs":{},"非":{"docs":{},"另":{"docs":{},"外":{"docs":{},"声":{"docs":{},"明":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{},"表":{"docs":{},"示":{"docs":{},"无":{"docs":{},"误":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}},"docs":{}}},"docs":{}},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"指":{"docs":{},"向":{"docs":{},"与":{"docs":{},"f":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}}}}}}},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}},"当":{"docs":{},"前":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}}},"释":{"docs":{},"放":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"f":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_0.html","tf":0.007246376811594203}}}}}}}}}}},"\"":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"\"":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"\"":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"\"":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"l":{"docs":{},"d":{"docs":{},"\\":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}},"c":{"docs":{},"\"":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}},"b":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"%":{"docs":{},"d":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}},"/":{"docs":{},"/":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.02247191011235955},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.08888888888888889}}},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"x":{"docs":{},"y":{"docs":{},"z":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}},"=":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.056179775280898875},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.03076923076923077},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.022222222222222223}},"=":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.023076923076923078},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}},">":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"f":{"docs":{},"t":{"docs":{},")":{"docs":{},"。":{"docs":{},"然":{"docs":{},"后":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}},"进":{"docs":{},"行":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},",":{"docs":{},"并":{"docs":{},"在":{"docs":{},"内":{"docs":{},"部":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"运":{"docs":{},"行":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"(":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},")":{"docs":{},"执":{"docs":{},"行":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"时":{"docs":{},"也":{"docs":{},"会":{"docs":{},"更":{"docs":{},"加":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"只":{"docs":{},"需":{"docs":{},"进":{"docs":{},"行":{"docs":{},"上":{"docs":{},"述":{"docs":{},"的":{"docs":{},"修":{"docs":{},"改":{"docs":{},",":{"docs":{},"s":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},"声":{"docs":{},"明":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"入":{"docs":{},"口":{"docs":{},"处":{"docs":{},"开":{"docs":{},"始":{"docs":{},"执":{"docs":{},"行":{"docs":{},"。":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"有":{"docs":{},"两":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},":":{"docs":{},"可":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"和":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"参":{"docs":{},"数":{"docs":{},"数":{"docs":{},"组":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976}},"”":{"docs":{},",":{"docs":{},"它":{"docs":{},"将":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"7":{"8":{"docs":{},")":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"成":{"docs":{},"功":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"将":{"docs":{},"从":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"执":{"docs":{},"行":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"在":{"docs":{},"某":{"docs":{},"刻":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"会":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"t":{"docs":{},",":{"docs":{},"这":{"docs":{},"将":{"docs":{},"导":{"docs":{},"致":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"从":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"7":{"8":{"docs":{},")":{"docs":{},"中":{"docs":{},"的":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"返":{"docs":{},"回":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{},"参":{"docs":{},"数":{"docs":{},"被":{"docs":{},"调":{"docs":{},"用":{"docs":{},"来":{"docs":{},"执":{"docs":{},"行":{"docs":{},"实":{"docs":{},"际":{"docs":{},"命":{"docs":{},"令":{"docs":{},"。":{"docs":{},"对":{"docs":{},"于":{"docs":{},"“":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}},"时":{"docs":{},",":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"5":{"8":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"程":{"docs":{},"序":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"多":{"docs":{},"数":{"docs":{},"程":{"docs":{},"序":{"docs":{},"忽":{"docs":{},"略":{"docs":{},"参":{"docs":{},"数":{"docs":{},"数":{"docs":{},"组":{"docs":{},"中":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"元":{"docs":{},"素":{"docs":{},",":{"docs":{},"它":{"docs":{},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"程":{"docs":{},"序":{"docs":{},"名":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}},"在":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"中":{"docs":{},"退":{"docs":{},"出":{"docs":{},"时":{"docs":{},",":{"docs":{},"内":{"docs":{},"部":{"docs":{},"进":{"docs":{},"程":{"docs":{},"将":{"docs":{},"退":{"docs":{},"出":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"会":{"docs":{},"调":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"来":{"docs":{},"运":{"docs":{},"行":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"右":{"docs":{},"端":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"不":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"行":{"docs":{},"为":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"不":{"docs":{},"调":{"docs":{},"用":{"docs":{},"内":{"docs":{},"部":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"中":{"docs":{},"的":{"docs":{},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"t":{"docs":{},"来":{"docs":{},"修":{"docs":{},"复":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"这":{"docs":{},"个":{"docs":{},"修":{"docs":{},"复":{"docs":{},"使":{"docs":{},"代":{"docs":{},"码":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"化":{"docs":{},":":{"docs":{},"现":{"docs":{},"在":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"m":{"docs":{},"d":{"docs":{},"需":{"docs":{},"要":{"docs":{},"知":{"docs":{},"道":{"docs":{},"它":{"docs":{},"是":{"docs":{},"否":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"内":{"docs":{},"部":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{},"同":{"docs":{},"样":{"docs":{},"的":{"docs":{},",":{"docs":{},"当":{"docs":{},"没":{"docs":{},"有":{"docs":{},"对":{"docs":{},"(":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"立":{"docs":{},"即":{"docs":{},"打":{"docs":{},"印":{"docs":{},"“":{"docs":{},"h":{"docs":{},"i":{"docs":{},"”":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"在":{"1":{"0":{"docs":{},"秒":{"docs":{},"后":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{},"将":{"docs":{},"立":{"docs":{},"即":{"docs":{},"运":{"docs":{},"行":{"docs":{},"并":{"docs":{},"退":{"docs":{},"出":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"等":{"docs":{},"待":{"docs":{},"s":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{},"完":{"docs":{},"成":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},"的":{"docs":{},"目":{"docs":{},"标":{"docs":{},"是":{"docs":{},"尽":{"docs":{},"可":{"docs":{},"能":{"docs":{},"的":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"它":{"docs":{},"不":{"docs":{},"会":{"docs":{},"试":{"docs":{},"图":{"docs":{},"避":{"docs":{},"免":{"docs":{},"创":{"docs":{},"建":{"docs":{},"内":{"docs":{},"部":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"{":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.033707865168539325},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.046153846153846156},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}},"}":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.033707865168539325},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.046153846153846156},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.025974025974025976}},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"创":{"docs":{},"建":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"其":{"docs":{},"内":{"docs":{},"存":{"docs":{},"内":{"docs":{},"容":{"docs":{},"与":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"(":{"docs":{},"称":{"docs":{},"为":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},")":{"docs":{},"完":{"docs":{},"全":{"docs":{},"相":{"docs":{},"同":{"docs":{},",":{"docs":{},"称":{"docs":{},"其":{"docs":{},"为":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"在":{"docs":{},"父":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"都":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"。":{"docs":{},"在":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},",":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"返":{"docs":{},"回":{"docs":{},"子":{"docs":{},"类":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},";":{"docs":{},"在":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},",":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"返":{"docs":{},"回":{"docs":{},"零":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"下":{"docs":{},"面":{"docs":{},"用":{"docs":{},"c":{"docs":{},"语":{"docs":{},"言":{"docs":{},"编":{"docs":{},"写":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"片":{"docs":{},"段":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"例":{"docs":{},"外":{"docs":{},"是":{"docs":{},"c":{"docs":{},"d":{"docs":{},",":{"docs":{},"它":{"docs":{},"是":{"docs":{},"内":{"docs":{},"置":{"docs":{},"在":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"1":{"6":{"0":{"docs":{},")":{"docs":{},"。":{"docs":{},"c":{"docs":{},"d":{"docs":{},"必":{"docs":{},"须":{"docs":{},"更":{"docs":{},"改":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"本":{"docs":{},"身":{"docs":{},"的":{"docs":{},"当":{"docs":{},"前":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"c":{"docs":{},"d":{"docs":{},"作":{"docs":{},"为":{"docs":{},"常":{"docs":{},"规":{"docs":{},"命":{"docs":{},"令":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"将":{"docs":{},"分":{"docs":{},"出":{"docs":{},"一":{"docs":{},"个":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},",":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"将":{"docs":{},"运":{"docs":{},"行":{"docs":{},"c":{"docs":{},"d":{"docs":{},",":{"docs":{},"c":{"docs":{},"d":{"docs":{},"将":{"docs":{},"更":{"docs":{},"改":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"。":{"docs":{},"父":{"docs":{},"目":{"docs":{},"录":{"docs":{},"(":{"docs":{},"即":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"的":{"docs":{},")":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"不":{"docs":{},"会":{"docs":{},"改":{"docs":{},"变":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"名":{"docs":{},"字":{"docs":{},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"本":{"docs":{},"身":{"docs":{},"是":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},";":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"底":{"docs":{},"层":{"docs":{},"文":{"docs":{},"件":{"docs":{},"(":{"docs":{},"叫":{"docs":{},"做":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},",":{"docs":{},"索":{"docs":{},"引":{"docs":{},"结":{"docs":{},"点":{"docs":{},")":{"docs":{},"可":{"docs":{},"以":{"docs":{},"有":{"docs":{},"多":{"docs":{},"个":{"docs":{},"名":{"docs":{},"字":{"docs":{},"(":{"docs":{},"叫":{"docs":{},"做":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},",":{"docs":{},"链":{"docs":{},"接":{"docs":{},")":{"docs":{},"。":{"docs":{},"每":{"docs":{},"个":{"docs":{},"链":{"docs":{},"接":{"docs":{},"都":{"docs":{},"由":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"条":{"docs":{},"目":{"docs":{},"组":{"docs":{},"成":{"docs":{},";":{"docs":{},"该":{"docs":{},"条":{"docs":{},"目":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"和":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"引":{"docs":{},"用":{"docs":{},"。":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"保":{"docs":{},"存":{"docs":{},"有":{"docs":{},"关":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"元":{"docs":{},"数":{"docs":{},"据":{"docs":{},"(":{"docs":{},"用":{"docs":{},"于":{"docs":{},"解":{"docs":{},"释":{"docs":{},"或":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"理":{"docs":{},"解":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},")":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"其":{"docs":{},"类":{"docs":{},"型":{"docs":{},"(":{"docs":{},"文":{"docs":{},"件":{"docs":{},"/":{"docs":{},"目":{"docs":{},"录":{"docs":{},"/":{"docs":{},"设":{"docs":{},"备":{"docs":{},")":{"docs":{},"、":{"docs":{},"长":{"docs":{},"度":{"docs":{},"、":{"docs":{},"文":{"docs":{},"件":{"docs":{},"内":{"docs":{},"容":{"docs":{},"在":{"docs":{},"磁":{"docs":{},"盘":{"docs":{},"上":{"docs":{},"的":{"docs":{},"位":{"docs":{},"置":{"docs":{},"以":{"docs":{},"及":{"docs":{},"指":{"docs":{},"向":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"链":{"docs":{},"接":{"docs":{},"数":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"你":{"docs":{},"或":{"docs":{},"许":{"docs":{},"想":{"docs":{},"知":{"docs":{},"道":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"和":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"没":{"docs":{},"有":{"docs":{},"组":{"docs":{},"合":{"docs":{},"成":{"docs":{},"为":{"docs":{},"一":{"docs":{},"个":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"稍":{"docs":{},"后":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"会":{"docs":{},"看":{"docs":{},"到":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"在":{"docs":{},"其":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"中":{"docs":{},"利":{"docs":{},"用":{"docs":{},"了":{"docs":{},"这":{"docs":{},"种":{"docs":{},"分":{"docs":{},"离":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"避":{"docs":{},"免":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"重":{"docs":{},"复":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"然":{"docs":{},"后":{"docs":{},"立":{"docs":{},"即":{"docs":{},"替":{"docs":{},"换":{"docs":{},"它":{"docs":{},"(":{"docs":{},"使":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},")":{"docs":{},"的":{"docs":{},"浪":{"docs":{},"费":{"docs":{},",":{"docs":{},"操":{"docs":{},"作":{"docs":{},"内":{"docs":{},"核":{"docs":{},"通":{"docs":{},"过":{"docs":{},"使":{"docs":{},"用":{"docs":{},"虚":{"docs":{},"拟":{"docs":{},"内":{"docs":{},"存":{"docs":{},"技":{"docs":{},"术":{"docs":{},"(":{"docs":{},"如":{"docs":{},"c":{"docs":{},"o":{"docs":{},"p":{"docs":{},"i":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"能":{"docs":{},"以":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"种":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"出":{"docs":{},"来":{"docs":{},",":{"docs":{},"这":{"docs":{},"取":{"docs":{},"决":{"docs":{},"于":{"docs":{},"父":{"docs":{},"或":{"docs":{},"子":{"docs":{},"谁":{"docs":{},"先":{"docs":{},"到":{"docs":{},"达":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"f":{"docs":{},"调":{"docs":{},"用":{"docs":{},"。":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"退":{"docs":{},"出":{"docs":{},"后":{"docs":{},",":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"返":{"docs":{},"回":{"docs":{},",":{"docs":{},"导":{"docs":{},"致":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"打":{"docs":{},"印":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"读":{"docs":{},"可":{"docs":{},"写":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"以":{"docs":{},"不":{"docs":{},"通":{"docs":{},"过":{"docs":{},"管":{"docs":{},"道":{"docs":{},"实":{"docs":{},"现":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}},"在":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"返":{"docs":{},"回":{"0":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}},"docs":{}}}},"关":{"docs":{},"闭":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"0":{"docs":{},"之":{"docs":{},"后":{"docs":{},",":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"保":{"docs":{},"证":{"docs":{},"使":{"docs":{},"用":{"docs":{},"新":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},":":{"0":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"作":{"docs":{},"为":{"docs":{},"最":{"docs":{},"小":{"docs":{},"的":{"docs":{},"可":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"然":{"docs":{},"后":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"0":{"docs":{},"(":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"入":{"docs":{},")":{"docs":{},",":{"docs":{},"但":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"是":{"docs":{},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},"。":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"不":{"docs":{},"会":{"docs":{},"被":{"docs":{},"这":{"docs":{},"个":{"docs":{},"序":{"docs":{},"列":{"docs":{},"改":{"docs":{},"变":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"它":{"docs":{},"只":{"docs":{},"修":{"docs":{},"改":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"中":{"docs":{},",":{"docs":{},"输":{"docs":{},"出":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}},"用":{"docs":{},"例":{"docs":{},"中":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"(":{"docs":{},"见":{"docs":{},"第":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}},"片":{"docs":{},"段":{"docs":{},"的":{"docs":{},"末":{"docs":{},"尾":{"docs":{},",":{"docs":{},"附":{"docs":{},"加":{"docs":{},"到":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"1":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"将":{"docs":{},"包":{"docs":{},"含":{"docs":{},"数":{"docs":{},"据":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"管":{"docs":{},"道":{"docs":{},"相":{"docs":{},"比":{"docs":{},"临":{"docs":{},"时":{"docs":{},"文":{"docs":{},"件":{"docs":{},"至":{"docs":{},"少":{"docs":{},"有":{"docs":{},"四":{"docs":{},"个":{"docs":{},"优":{"docs":{},"势":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}},"内":{"docs":{},"部":{"docs":{},",":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"内":{"docs":{},"核":{"docs":{},"使":{"docs":{},"用":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"作":{"docs":{},"为":{"docs":{},"每":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"表":{"docs":{},"的":{"docs":{},"索":{"docs":{},"引":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"每":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"都":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"从":{"docs":{},"零":{"docs":{},"开":{"docs":{},"始":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"的":{"docs":{},"私":{"docs":{},"有":{"docs":{},"空":{"docs":{},"间":{"docs":{},"。":{"docs":{},"按":{"docs":{},"照":{"docs":{},"惯":{"docs":{},"例":{"docs":{},",":{"docs":{},"进":{"docs":{},"程":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"0":{"docs":{},"读":{"docs":{},"取":{"docs":{},"(":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"入":{"docs":{},")":{"docs":{},",":{"docs":{},"将":{"docs":{},"输":{"docs":{},"出":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"1":{"docs":{},"(":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"出":{"docs":{},")":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{},"错":{"docs":{},"误":{"docs":{},"消":{"docs":{},"息":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"2":{"docs":{},"(":{"docs":{},"标":{"docs":{},"准":{"docs":{},"错":{"docs":{},"误":{"docs":{},")":{"docs":{},"。":{"docs":{},"正":{"docs":{},"如":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"利":{"docs":{},"用":{"docs":{},"这":{"docs":{},"个":{"docs":{},"约":{"docs":{},"定":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"和":{"docs":{},"管":{"docs":{},"道":{"docs":{},"。":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"确":{"docs":{},"保":{"docs":{},"它":{"docs":{},"始":{"docs":{},"终":{"docs":{},"有":{"docs":{},"三":{"docs":{},"个":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},":":{"1":{"5":{"1":{"docs":{},")":{"docs":{},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{},"的":{"docs":{},"默":{"docs":{},"认":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"它":{"docs":{},"透":{"docs":{},"明":{"docs":{},"地":{"docs":{},"在":{"docs":{},"等":{"docs":{},"待":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"集":{"docs":{},"合":{"docs":{},"中":{"docs":{},"切":{"docs":{},"换":{"docs":{},"可":{"docs":{},"用":{"docs":{},"的":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"。":{"docs":{},"当":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"没":{"docs":{},"有":{"docs":{},"执":{"docs":{},"行":{"docs":{},"时":{"docs":{},",":{"docs":{},"x":{"docs":{},"v":{"6":{"docs":{},"保":{"docs":{},"存":{"docs":{},"它":{"docs":{},"的":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"寄":{"docs":{},"存":{"docs":{},"器":{"docs":{},",":{"docs":{},"并":{"docs":{},"在":{"docs":{},"下":{"docs":{},"一":{"docs":{},"次":{"docs":{},"运":{"docs":{},"行":{"docs":{},"该":{"docs":{},"进":{"docs":{},"程":{"docs":{},"时":{"docs":{},"恢":{"docs":{},"复":{"docs":{},"它":{"docs":{},"们":{"docs":{},"。":{"docs":{},"内":{"docs":{},"核":{"docs":{},"利":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"i":{"docs":{},"d":{"docs":{},"或":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"标":{"docs":{},"识":{"docs":{},"每":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"尽":{"docs":{},"管":{"docs":{},"最":{"docs":{},"初":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"与":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"有":{"docs":{},"着":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"内":{"docs":{},"容":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"二":{"docs":{},"者":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"中":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"空":{"docs":{},"间":{"docs":{},"和":{"docs":{},"寄":{"docs":{},"存":{"docs":{},"器":{"docs":{},":":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"改":{"docs":{},"变":{"docs":{},"变":{"docs":{},"量":{"docs":{},"不":{"docs":{},"会":{"docs":{},"影":{"docs":{},"响":{"docs":{},"到":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},"当":{"docs":{},"w":{"docs":{},"a":{"docs":{},"i":{"docs":{},"t":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"存":{"docs":{},"入":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"变":{"docs":{},"量":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"中":{"docs":{},"时":{"docs":{},",":{"docs":{},"并":{"docs":{},"不":{"docs":{},"会":{"docs":{},"影":{"docs":{},"响":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"的":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"仍":{"docs":{},"然":{"docs":{},"为":{"0":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"复":{"docs":{},"制":{"docs":{},"了":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"表":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"每":{"docs":{},"个":{"docs":{},"基":{"docs":{},"础":{"docs":{},"文":{"docs":{},"件":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},"在":{"docs":{},"父":{"docs":{},"文":{"docs":{},"件":{"docs":{},"和":{"docs":{},"子":{"docs":{},"文":{"docs":{},"件":{"docs":{},"之":{"docs":{},"间":{"docs":{},"是":{"docs":{},"共":{"docs":{},"享":{"docs":{},"的":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"节":{"docs":{},")":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}},"这":{"docs":{},"个":{"docs":{},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"将":{"docs":{},"调":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"替":{"docs":{},"换":{"docs":{},"为":{"docs":{},"了":{"docs":{},"参":{"docs":{},"数":{"docs":{},"列":{"docs":{},"表":{"docs":{},"为":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"o":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}},"例":{"docs":{},"子":{"docs":{},"说":{"docs":{},"明":{"docs":{},"了":{"docs":{},"这":{"docs":{},"三":{"docs":{},"点":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}},"进":{"docs":{},"程":{"docs":{},"和":{"docs":{},"内":{"docs":{},"存":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":5.01123595505618}}}}}}},"隐":{"docs":{},"式":{"docs":{},"地":{"docs":{},"分":{"docs":{},"配":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"用":{"docs":{},"户":{"docs":{},"空":{"docs":{},"间":{"docs":{},"内":{"docs":{},"存":{"docs":{},":":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"分":{"docs":{},"配":{"docs":{},"父":{"docs":{},"内":{"docs":{},"存":{"docs":{},"的":{"docs":{},"子":{"docs":{},"副":{"docs":{},"本":{"docs":{},"所":{"docs":{},"需":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},",":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"分":{"docs":{},"配":{"docs":{},"足":{"docs":{},"够":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"来":{"docs":{},"保":{"docs":{},"存":{"docs":{},"可":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"需":{"docs":{},"要":{"docs":{},"更":{"docs":{},"多":{"docs":{},"内":{"docs":{},"存":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"(":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},")":{"docs":{},"可":{"docs":{},"以":{"docs":{},"调":{"docs":{},"用":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_1.html","tf":0.011235955056179775}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"!":{"docs":{},"=":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}},"(":{"docs":{},";":{"docs":{},";":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.015384615384615385}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"1":{"docs":{},",":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}},"docs":{}}}}}}}},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"中":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"的":{"docs":{},"重":{"docs":{},"要":{"docs":{},"一":{"docs":{},"点":{"docs":{},"是":{"docs":{},",":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"它":{"docs":{},"是":{"docs":{},"从":{"docs":{},"文":{"docs":{},"件":{"docs":{},"、":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{},"还":{"docs":{},"是":{"docs":{},"管":{"docs":{},"道":{"docs":{},"读":{"docs":{},"取":{"docs":{},"。":{"docs":{},"同":{"docs":{},"样":{"docs":{},"也":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"它":{"docs":{},"是":{"docs":{},"打":{"docs":{},"印":{"docs":{},"到":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{},"、":{"docs":{},"文":{"docs":{},"件":{"docs":{},"还":{"docs":{},"是":{"docs":{},"其":{"docs":{},"他":{"docs":{},"什":{"docs":{},"么":{"docs":{},"地":{"docs":{},"方":{"docs":{},"。":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"以":{"docs":{},"及":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"0":{"docs":{},"是":{"docs":{},"输":{"docs":{},"入":{"docs":{},"而":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"1":{"docs":{},"是":{"docs":{},"输":{"docs":{},"出":{"docs":{},"的":{"docs":{},"约":{"docs":{},"定":{"docs":{},"允":{"docs":{},"许":{"docs":{},"了":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"的":{"docs":{},"简":{"docs":{},"单":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"以":{"docs":{},"下":{"docs":{},"程":{"docs":{},"序":{"docs":{},"片":{"docs":{},"段":{"docs":{},"(":{"docs":{},"构":{"docs":{},"成":{"docs":{},"程":{"docs":{},"序":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"的":{"docs":{},"本":{"docs":{},"质":{"docs":{},")":{"docs":{},"将":{"docs":{},"数":{"docs":{},"据":{"docs":{},"从":{"docs":{},"其":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"入":{"docs":{},"复":{"docs":{},"制":{"docs":{},"到":{"docs":{},"其":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"出":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"发":{"docs":{},"生":{"docs":{},"错":{"docs":{},"误":{"docs":{},",":{"docs":{},"它":{"docs":{},"将":{"docs":{},"消":{"docs":{},"息":{"docs":{},"写":{"docs":{},"入":{"docs":{},"标":{"docs":{},"准":{"docs":{},"错":{"docs":{},"误":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"功":{"docs":{},"能":{"docs":{},"说":{"docs":{},"明":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}},"宏":{"docs":{},"定":{"docs":{},"义":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"和":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"相":{"docs":{},"互":{"docs":{},"作":{"docs":{},"用":{"docs":{},",":{"docs":{},"使":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"更":{"docs":{},"容":{"docs":{},"易":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"复":{"docs":{},"制":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"表":{"docs":{},"及":{"docs":{},"其":{"docs":{},"内":{"docs":{},"存":{"docs":{},",":{"docs":{},"以":{"docs":{},"便":{"docs":{},"子":{"docs":{},"级":{"docs":{},"以":{"docs":{},"与":{"docs":{},"父":{"docs":{},"级":{"docs":{},"在":{"docs":{},"开":{"docs":{},"始":{"docs":{},"时":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"完":{"docs":{},"全":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"打":{"docs":{},"开":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"替":{"docs":{},"换":{"docs":{},"了":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},",":{"docs":{},"但":{"docs":{},"保":{"docs":{},"留":{"docs":{},"其":{"docs":{},"文":{"docs":{},"件":{"docs":{},"表":{"docs":{},"。":{"docs":{},"此":{"docs":{},"行":{"docs":{},"为":{"docs":{},"允":{"docs":{},"许":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"通":{"docs":{},"过":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},",":{"docs":{},"在":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"中":{"docs":{},"重":{"docs":{},"新":{"docs":{},"打":{"docs":{},"开":{"docs":{},"选":{"docs":{},"定":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"来":{"docs":{},"运":{"docs":{},"行":{"docs":{},"新":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"运":{"docs":{},"行":{"docs":{},"命":{"docs":{},"令":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"小":{"docs":{},"整":{"docs":{},"数":{"docs":{},"(":{"docs":{},"s":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}},"强":{"docs":{},"大":{"docs":{},"的":{"docs":{},"抽":{"docs":{},"象":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"它":{"docs":{},"们":{"docs":{},"隐":{"docs":{},"藏":{"docs":{},"了":{"docs":{},"它":{"docs":{},"们":{"docs":{},"所":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"细":{"docs":{},"节":{"docs":{},":":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"1":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"可":{"docs":{},"能":{"docs":{},"写":{"docs":{},"入":{"docs":{},"文":{"docs":{},"件":{"docs":{},"、":{"docs":{},"设":{"docs":{},"备":{"docs":{},"(":{"docs":{},"如":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{},")":{"docs":{},"或":{"docs":{},"管":{"docs":{},"道":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}},"类":{"docs":{},"型":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}},"系":{"docs":{},"统":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":5.011111111111111}},"的":{"docs":{},"磁":{"docs":{},"盘":{"docs":{},"设":{"docs":{},"备":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"是":{"docs":{},"强":{"docs":{},"大":{"docs":{},"的":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"。":{"docs":{},"即":{"docs":{},"便":{"docs":{},"如":{"docs":{},"此":{"docs":{},",":{"docs":{},"还":{"docs":{},"有":{"docs":{},"其":{"docs":{},"他":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{},"接":{"docs":{},"口":{"docs":{},"模":{"docs":{},"型":{"docs":{},"。":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"s":{"docs":{},",":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"前":{"docs":{},"身":{"docs":{},",":{"docs":{},"以":{"docs":{},"一":{"docs":{},"种":{"docs":{},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"像":{"docs":{},"内":{"docs":{},"存":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"了":{"docs":{},"文":{"docs":{},"件":{"docs":{},"存":{"docs":{},"储":{"docs":{},",":{"docs":{},"产":{"docs":{},"生":{"docs":{},"了":{"docs":{},"一":{"docs":{},"种":{"docs":{},"非":{"docs":{},"常":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"风":{"docs":{},"格":{"docs":{},"。":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"s":{"docs":{},"设":{"docs":{},"计":{"docs":{},"的":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"性":{"docs":{},"直":{"docs":{},"接":{"docs":{},"影":{"docs":{},"响":{"docs":{},"了":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"者":{"docs":{},",":{"docs":{},"他":{"docs":{},"们":{"docs":{},"试":{"docs":{},"图":{"docs":{},"使":{"docs":{},"设":{"docs":{},"计":{"docs":{},"更":{"docs":{},"简":{"docs":{},"单":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":0.125}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"现":{"docs":{},"在":{"docs":{},"应":{"docs":{},"该":{"docs":{},"很":{"docs":{},"清":{"docs":{},"楚":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"和":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"分":{"docs":{},"离":{"docs":{},"的":{"docs":{},"用":{"docs":{},"处":{"docs":{},"了":{"docs":{},":":{"docs":{},"在":{"docs":{},"这":{"docs":{},"两":{"docs":{},"个":{"docs":{},"调":{"docs":{},"用":{"docs":{},"之":{"docs":{},"间":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"有":{"docs":{},"机":{"docs":{},"会":{"docs":{},"对":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"进":{"docs":{},"行":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"会":{"docs":{},"干":{"docs":{},"扰":{"docs":{},"主":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"的":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"设":{"docs":{},"置":{"docs":{},"。":{"docs":{},"我":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"想":{"docs":{},"象":{"docs":{},"一":{"docs":{},"个":{"docs":{},"假":{"docs":{},"设":{"docs":{},"的":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"组":{"docs":{},"合":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"用":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"调":{"docs":{},"用":{"docs":{},"进":{"docs":{},"行":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"是":{"docs":{},"很":{"docs":{},"笨":{"docs":{},"拙":{"docs":{},"的":{"docs":{},"。":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"调":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"之":{"docs":{},"前":{"docs":{},"修":{"docs":{},"改":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"设":{"docs":{},"置":{"docs":{},"(":{"docs":{},"然":{"docs":{},"后":{"docs":{},"撤":{"docs":{},"销":{"docs":{},"这":{"docs":{},"些":{"docs":{},"修":{"docs":{},"改":{"docs":{},")":{"docs":{},";":{"docs":{},"或":{"docs":{},"者":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"可":{"docs":{},"以":{"docs":{},"将":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"的":{"docs":{},"指":{"docs":{},"令":{"docs":{},"作":{"docs":{},"为":{"docs":{},"参":{"docs":{},"数":{"docs":{},";":{"docs":{},"或":{"docs":{},"者":{"docs":{},"(":{"docs":{},"最":{"docs":{},"不":{"docs":{},"吸":{"docs":{},"引":{"docs":{},"人":{"docs":{},"的":{"docs":{},"是":{"docs":{},")":{"docs":{},"可":{"docs":{},"以":{"docs":{},"让":{"docs":{},"每":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"(":{"docs":{},"如":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},")":{"docs":{},"执":{"docs":{},"行":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"i":{"docs":{},"/":{"docs":{},"o":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"简":{"docs":{},"化":{"docs":{},"版":{"docs":{},"本":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_2.html","tf":0.007692307692307693}}}}}}}}}}},"|":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.07792207792207792},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.03333333333333333}}},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"示":{"docs":{},"例":{"docs":{},"代":{"docs":{},"码":{"docs":{},"使":{"docs":{},"用":{"docs":{},"连":{"docs":{},"接":{"docs":{},"到":{"docs":{},"管":{"docs":{},"道":{"docs":{},"读":{"docs":{},"端":{"docs":{},"的":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"入":{"docs":{},"来":{"docs":{},"运":{"docs":{},"行":{"docs":{},"程":{"docs":{},"序":{"docs":{},"w":{"docs":{},"c":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"其":{"docs":{},"次":{"docs":{},",":{"docs":{},"管":{"docs":{},"道":{"docs":{},"可":{"docs":{},"以":{"docs":{},"任":{"docs":{},"意":{"docs":{},"传":{"docs":{},"递":{"docs":{},"长":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"流":{"docs":{},",":{"docs":{},"而":{"docs":{},"文":{"docs":{},"件":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"需":{"docs":{},"要":{"docs":{},"磁":{"docs":{},"盘":{"docs":{},"上":{"docs":{},"足":{"docs":{},"够":{"docs":{},"的":{"docs":{},"空":{"docs":{},"闲":{"docs":{},"空":{"docs":{},"间":{"docs":{},"来":{"docs":{},"存":{"docs":{},"储":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"原":{"docs":{},"则":{"docs":{},"上":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"让":{"docs":{},"内":{"docs":{},"部":{"docs":{},"节":{"docs":{},"点":{"docs":{},"在":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"左":{"docs":{},"端":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"正":{"docs":{},"确":{"docs":{},"地":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},"会":{"docs":{},"使":{"docs":{},"实":{"docs":{},"现":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"化":{"docs":{},"。":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"进":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"修":{"docs":{},"改":{"docs":{},":":{"docs":{},"将":{"docs":{},"s":{"docs":{},"h":{"docs":{},".":{"docs":{},"c":{"docs":{},"更":{"docs":{},"改":{"docs":{},"为":{"docs":{},"不":{"docs":{},"对":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"调":{"docs":{},"用":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},",":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"管":{"docs":{},"道":{"docs":{},",":{"docs":{},"并":{"docs":{},"在":{"docs":{},"数":{"docs":{},"组":{"docs":{},"p":{"docs":{},"中":{"docs":{},"记":{"docs":{},"录":{"docs":{},"读":{"docs":{},"写":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{},"在":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"之":{"docs":{},"后":{"docs":{},",":{"docs":{},"父":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"都":{"docs":{},"有":{"docs":{},"指":{"docs":{},"向":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"。":{"docs":{},"子":{"docs":{},"进":{"docs":{},"程":{"docs":{},"调":{"docs":{},"用":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},"和":{"docs":{},"d":{"docs":{},"u":{"docs":{},"p":{"docs":{},"使":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"0":{"docs":{},"指":{"docs":{},"向":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"读":{"docs":{},"取":{"docs":{},"端":{"docs":{},"(":{"docs":{},"前":{"docs":{},"面":{"docs":{},"说":{"docs":{},"过":{"docs":{},"优":{"docs":{},"先":{"docs":{},"分":{"docs":{},"配":{"docs":{},"最":{"docs":{},"小":{"docs":{},"的":{"docs":{},"未":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},")":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"p":{"docs":{},"中":{"docs":{},"所":{"docs":{},"存":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},",":{"docs":{},"并":{"docs":{},"调":{"docs":{},"用":{"docs":{},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"运":{"docs":{},"行":{"docs":{},"w":{"docs":{},"c":{"docs":{},"。":{"docs":{},"当":{"docs":{},"w":{"docs":{},"c":{"docs":{},"从":{"docs":{},"它":{"docs":{},"的":{"docs":{},"标":{"docs":{},"准":{"docs":{},"输":{"docs":{},"入":{"docs":{},"读":{"docs":{},"取":{"docs":{},"时":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"从":{"docs":{},"管":{"docs":{},"道":{"docs":{},"读":{"docs":{},"取":{"docs":{},"。":{"docs":{},"父":{"docs":{},"进":{"docs":{},"程":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"读":{"docs":{},"取":{"docs":{},"端":{"docs":{},",":{"docs":{},"写":{"docs":{},"入":{"docs":{},"管":{"docs":{},"道":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"写":{"docs":{},"入":{"docs":{},"端":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"道":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":5.012987012987013}},"是":{"docs":{},"作":{"docs":{},"为":{"docs":{},"一":{"docs":{},"对":{"docs":{},"文":{"docs":{},"件":{"docs":{},"描":{"docs":{},"述":{"docs":{},"符":{"docs":{},"公":{"docs":{},"开":{"docs":{},"给":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"小":{"docs":{},"型":{"docs":{},"内":{"docs":{},"核":{"docs":{},"缓":{"docs":{},"冲":{"docs":{},"区":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"于":{"docs":{},"读":{"docs":{},"取":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"用":{"docs":{},"于":{"docs":{},"写":{"docs":{},"入":{"docs":{},"。":{"docs":{},"将":{"docs":{},"数":{"docs":{},"据":{"docs":{},"写":{"docs":{},"入":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"一":{"docs":{},"端":{"docs":{},"使":{"docs":{},"得":{"docs":{},"这":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"管":{"docs":{},"道":{"docs":{},"的":{"docs":{},"另":{"docs":{},"一":{"docs":{},"端":{"docs":{},"读":{"docs":{},"取":{"docs":{},"。":{"docs":{},"管":{"docs":{},"道":{"docs":{},"为":{"docs":{},"进":{"docs":{},"程":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"一":{"docs":{},"种":{"docs":{},"通":{"docs":{},"信":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"并":{"docs":{},"不":{"docs":{},"比":{"docs":{},"临":{"docs":{},"时":{"docs":{},"文":{"docs":{},"件":{"docs":{},"更":{"docs":{},"强":{"docs":{},"大":{"docs":{},":":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"管":{"docs":{},"道":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}},"首":{"docs":{},"先":{"docs":{},",":{"docs":{},"管":{"docs":{},"道":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"清":{"docs":{},"理":{"docs":{},"自":{"docs":{},"己":{"docs":{},";":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"重":{"docs":{},"定":{"docs":{},"向":{"docs":{},"时":{"docs":{},",":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"使":{"docs":{},"用":{"docs":{},"完":{"docs":{},"/":{"docs":{},"t":{"docs":{},"m":{"docs":{},"p":{"docs":{},"/":{"docs":{},"x":{"docs":{},"y":{"docs":{},"z":{"docs":{},"后":{"docs":{},"必":{"docs":{},"须":{"docs":{},"小":{"docs":{},"心":{"docs":{},"删":{"docs":{},"除":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_3.html","tf":0.012987012987012988}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.03333333333333333}}}}}}}},"上":{"docs":{},"面":{"docs":{},"代":{"docs":{},"码":{"docs":{},"将":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{},"更":{"docs":{},"改":{"docs":{},"为":{"docs":{},"/":{"docs":{},"a":{"docs":{},"/":{"docs":{},"b":{"docs":{},";":{"docs":{},"下":{"docs":{},"面":{"docs":{},"代":{"docs":{},"码":{"docs":{},"既":{"docs":{},"不":{"docs":{},"引":{"docs":{},"用":{"docs":{},"也":{"docs":{},"不":{"docs":{},"更":{"docs":{},"改":{"docs":{},"进":{"docs":{},"程":{"docs":{},"的":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"指":{"docs":{},"向":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"链":{"docs":{},"接":{"docs":{},"数":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}},"是":{"docs":{},"创":{"docs":{},"建":{"docs":{},"没":{"docs":{},"有":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"临":{"docs":{},"时":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"的":{"docs":{},"惯":{"docs":{},"用":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"该":{"docs":{},"临":{"docs":{},"时":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"将":{"docs":{},"在":{"docs":{},"进":{"docs":{},"程":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"f":{"docs":{},"d":{"docs":{},"或":{"docs":{},"退":{"docs":{},"出":{"docs":{},"时":{"docs":{},"被":{"docs":{},"清":{"docs":{},"理":{"docs":{},"。":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"最":{"docs":{},"后":{"docs":{},"一":{"docs":{},"行":{"docs":{},"代":{"docs":{},"码":{"docs":{},"序":{"docs":{},"列":{"docs":{},"中":{"docs":{},"会":{"docs":{},"使":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"内":{"docs":{},"容":{"docs":{},"可":{"docs":{},"以":{"docs":{},"作":{"docs":{},"为":{"docs":{},"b":{"docs":{},"访":{"docs":{},"问":{"docs":{},"。":{"docs":{},"此":{"docs":{},"外":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"还":{"docs":{},"有":{"docs":{},"创":{"docs":{},"建":{"docs":{},"新":{"docs":{},"文":{"docs":{},"件":{"docs":{},"和":{"docs":{},"目":{"docs":{},"录":{"docs":{},"的":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},":":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_4.html","tf":0.011111111111111112}}}}}}}}}}}}}}}}}},"真":{"docs":{},"实":{"docs":{},"世":{"docs":{},"界":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_5.html","tf":5.125}}}}}},"练":{"docs":{},"习":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_6.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_6.html","tf":5.25}}}},"编":{"docs":{},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"使":{"docs":{},"用":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"x":{"docs":{},"系":{"docs":{},"统":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"对":{"docs":{},"管":{"docs":{},"道":{"docs":{},"在":{"docs":{},"两":{"docs":{},"个":{"docs":{},"进":{"docs":{},"程":{"docs":{},"之":{"docs":{},"间":{"docs":{},"“":{"docs":{},"p":{"docs":{"tranlate_books/book-riscv-rev1/c1/s1_6.html":{"ref":"tranlate_books/book-riscv-rev1/c1/s1_6.html","tf":0.25}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"length":433},"corpusTokens":["!=","\",","\"b\");","\"cat\";","\"echo\";","\"hello","\"hello\";","\"read","\"wc\";","\"world\\n\",","\"write","#defin","%d","<","(;;)","(fork()","(n","(write(1,","*)","*argv[2];","*buf,","*dir)","*file)","*file,","*sbrk(int","*st)","*status)","//","/tmp/xyz;","0)","0);","0;","1","1);","1,","1.1","1.2","1.3","1.4","1.5","1.6","10","12);","1234","1。如果父进程不关心子进程的退出状态,它可以传递一个0地址给wait。","1表示出错)","1表示错误","2","2020","2>&1。2>&1告诉shell给命令的文件描述符2是描述符1的副本。现有文件的名称和不存在文件的错误信息都会显示在tmp1文件中。xv6","3","4.6","5)中","6);","6.s081","=","==",">",">left)。然后,例如,echo",">left进行fork,并在内部进程中运行runcmd(p",">output.txt。",">right)执行fork时也会更加复杂。例如,只需进行上述的修改,sleep","argv);","argv[0]","argv[1]","argv[2]","argv[2];","argv[3];","argv[])","b","bilibili","book","bourn","break;","buf);","buf,","buf[512];","c),该管道本身fork为两个新的子进程(一个用于b,一个用于c)。因此,shell可以创建一个进程树。这个树的叶子是命令,内部节点是等待左右两个子进程完成的进程。","char","char*","chdir(\"/a\");","chdir(\"b\");","chdir(char","child","child:","child=%d\\n\",","child=1234","close(0);","close(fd);","close(int","close(p[0]);","close(p[1]);","close系统调用释放一个文件描述符,使其可以被未来使用的open、pipe或dup系统调用重用(见下文)。新分配的文件描述符总是当前进程中编号最小的未使用描述符。","dev;","devic","directori","done","done\\n\",","dup(1);","dup(int","dup(p[0]);","dup系统调用复制一个现有的文件描述符,返回一个引用自同一个底层i/o对象的新文件描述符。两个文件描述符共享一个偏移量,就像fork复制的文件描述符一样。这是另一种将“hello","echo","error\\n\");","exec(\"/bin/echo\",","exec(\"/bin/wc\",","exec(\"cat\",","exec(char","exec系统调用使用从文件系统中存储的文件所加载的新内存映像替换调用进程的内存。(百度百科:根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件)该文件必须有特殊的格式,它指定文件的哪部分存放指令,哪部分是数据,以及哪一条指令用于启动等等。xv6使用elf格式(将会在第三章详细讨论)。当exec执行成功,它不向调用进程返回数据,而是使加载自文件的指令在elf","exist","exit","exit(0);","exit(1);","exit(int","exiting\\n\");","exit系统调用导致调用进程停止执行并释放资源(如内存和打开的文件)。exit接受一个整数状态参数,通常0表示成功,1表示失败。wait系统调用返回当前进程的已退出(或已杀死)子进程的pid,并将子进程的退出状态复制到传递给wait的地址;如果调用方的子进程都没有退出,那么wait等待一个子进程退出。如果调用者没有子级,wait立即返回","fall","fall2020是麻省理工2020年秋季的操作系统课程,mit将学习相关的资源全部公开并放到了官网。本课程中共涉及11个实验,需要花费一定时间来完成。由于是国外的课程,文档资料均为英文,本人英文水平一般,为方便自己后续查阅和其他英文水平一般的同学也能上手本课程,计划将资料全部翻译为中文。并分享课程笔记和实验记录。","fd","fd)","fd,","file","file,","file1,","file2)","flags)","fork","fork()","fork();","fork()在父进程中返回子进程的pid","fprintf(2,","fstat(int","fstat系统调用从文件描述符所引用的inode中检索信息。它填充一个stat类型的结构体,struct","getpid()","gitbook","github","header中声明的程序入口处开始执行。exec有两个参数:可执行文件的文件名和字符串参数数组。例如","hello","hello;echo","hello”,它将调用exec(user/sh.c:78)。如果exec成功,那么子进程将从echo而不是runcmd执行命令,在某刻echo会调用exit,这将导致父进程从main(user/sh.c:78)中的wait返回。","hello为参数被调用来执行实际命令。对于“echo","hello时,runcmd(user/sh.c:58)","hello的/bin/echo程序运行,多数程序忽略参数数组中的第一个元素,它通常是程序名。","hi","hi在runcmd中退出时,内部进程将退出,而不会调用fork来运行管道的右端。这个不正确的行为可以通过不调用内部进程的runcmd中的exit来修复,但是这个修复使代码复杂化:现在runcmd需要知道它是否是一个内部进程。同样的,当没有对(p","hi将立即打印“hi”,而不是在10秒后,因为echo将立即运行并退出,而不是等待sleep完成。因为sh.c的目标是尽可能的简单,所以它不会试图避免创建内部进程。","i/o。","i/o和文件描述符","if(pid","ino;","inode编号","int","int)","int,","integer),表示进程可以读取或写入的由内核管理的对象。进程可以通过打开一个文件、目录、设备,或创建一个管道,或复制一个已存在的描述符来获得一个文件描述符。为了简单起见,我们通常将文件描述符所指的对象称为“文件”;文件描述符接口将文件、管道和设备之间的差异抽象出来,使它们看起来都像字节流。我们将输入和输出称为","kill(int","lab","link(\"a\",","link(char","link系统调用创建另一个文件名,该文件名指向与现有文件相同的inode。下面的代码片段创建了一个名字既为a又为b的新文件","l之类的管道。子进程创建一个管道将管道的左端和右端连接起来。然后对管道的左端调用fork和runcmd,对管道的右端调用fork和runcmd,并等待两者都完成。管道的右端可能是一个命令,该命令本身包含一个管道(例如,a","mkdir(\"/dir\");","mkdir(char","mkdir创建一个新目录","mknod(\"/console\",","mknod(char","mknod创建一个引用设备的特殊文件。与设备文件相关联的是主设备号和次设备号(mknod的两个参数),它们唯一地标识了一个内核设备。当进程稍后打开设备文件时,内核将使用内核设备实现read和write系统调用,而不是使用文件系统。","mknod创建一个新的设备文件","n","n)","n;","nlink;","non","o_creat","o_rdonli","o_rdonly);","o_rdwr","o_rdwr);","o_trunc","o_wronli","o_wronly);","open(\"/a/b/c\",","open(\"/dir/file\",","open(\"/tmp/xyz\",","open(\"a\",","open(\"c\",","open(\"input.txt\",","open(char","open中若使用o_create标志将会创建一个新的数据文件","open的第二个参数由一组标志组成,这些标志以位表示,用于控制打开的操作。可能的值定义在文件控制(fcntl)头文件(kernel/fcntl.h:1","osx、solaris,甚至在一定程度上,microsoft","p[2];","p[])","parent:","pid","pid)","pid);","pipe(int","pipe(p);","pong”一个字节(也就是像打乒乓球一样来回传递),每个方向一个管道。以每秒的交换次数为单位,测量程序的性能。","printf(\"child","printf(\"child:","printf(\"exec","printf(\"fork","printf(\"parent:","read(0,","read(int","read和write系统调用以字节为单位读取或写入已打开的以文件描述符命名的文件。read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf,并返回读取的字节数,引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。","rev1","riscv","ritchie的unix","sbrk(n)将其数据内存增加n个字节;","sbrk返回新内存的位置。","sh.c","shell不支持错误文件描述符的i/o重定向,但是现在你知道如何实现它了。","shell以类似于上面代码(user/sh.c:100)的方式实现了诸如grep","shell是unix","shell是一个普通的程序,它从用户那里读取命令并执行它们。shell是一个用户程序,而不是内核的一部分,这一事实说明了系统调用接口的强大之处:shell没有什么特别之处。这也意味着shell很容易替换;因此,现代unix系统有多种shell可供选择,每种shell都有自己的用户界面和脚本特性。xv6","shell本质的简单实现。它的实现可以在(user/sh.c:1)中找到.","short","size;","sizeof","sleep(int","st)","stat","stat(char","status)","stat在stat.h(kernel/stat.h)中定义为","struct","t_devic","t_dir","t_file","thompson和denni","tmp1","type;","uint","uint64","unix以用户级程序的形式提供了可从shell调用的文件实用程序,例如mkdir、ln和rm。这种设计允许任何人通过添加新的用户级程序来扩展命令行接口。事后看来,这个计划似乎是显而易见的,但是在unix时代设计的其他系统经常将这样的命令构建到shell中(并将shell构建到内核中)","unix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作,这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化,这种文化对unix的强大和流行做出了卓越贡献,shell是第一个所谓的“脚本语言”。unix系统调用接口今天仍然存在于bsd、linux和macosx等系统中。","unix系统调用接口已经通过便携式操作系统接口(posix)标准进行了标准化。xv6与posix不兼容:它缺少许多系统调用(包括lseek等基本系统调用),并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了,同时提供一个简单的类unix系统调用接口。为了运行基本的unix程序,有些人扩展了xv6,增加了一些系统调用和一个简单的c库。然而,现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如,它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展,提供了许多超越posix的特性。","unix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是plan9,它将“资源是文件”的概念应用到网络、图形等等。然而,大多数unix衍生的操作系统并没有遵循这条路。","unlink(\"/tmp/xyz\");","unlink(\"a\");","unlink(char","unlink系统调用从文件系统中删除一个名称。只有当文件的链接数为零且没有文件描述符引用时,文件的inode和包含其内容的磁盘空间才会被释放,因此添加","wait((int","wait(0);","wait(int","wc","wc将不会产生输出,因为当echo","windows都有类unix的接口。理解xv6是理解这些系统和其他系统的一个良好开端。","world","world)","world\\n\",","world”写入文件的方法:","world。父进程中的写操作(由于等待,只有在子进程完成后才运行)在子进程停止写入的位置进行。这种行为有助于从shell命令序列产生顺序输出,比如(echo","write(1,","write(fd,","write(int","write(p[1],","write)优化","xv6","xv6shell中的i/o重定向代码就是这样工作的(user/sh.c:82)。回想一下,在代码执行到这里时,shell已经fork出了子shell,runcmd将调用exec来加载新程序。","xv6文件系统提供数据文件(包含未解释的字节数组)和目录(包含对数据文件和其他目录的命名引用)。这些目录形成一个树,从一个叫做根的特殊目录开始。像/a/b/c这样的路径是指在根目录/下名为a的目录中名为b的目录中名为c的文件或目录。不以/开始的路径相对于调用进程的当前工作目录进行计算,当前工作目录可以通过chdir系统调用进行更改。下面两个代码片段打开相同的文件(假设所有相关的目录都存在)","xv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用unix的术语来说,所有的xv6进程都作为root运行。","xv6的shell使用上述调用为用户运行程序。shell的主要结构很简单,请参见main(user/sh.c:145)。主循环使用getcmd函数从用户的输入中读取一行,然后调用fork创建一个shell进程的副本。父进程调用wait,子进程执行命令。例如:当用户向shell输入echo","xv6进程由用户空间内存(指令、数据和堆栈)和对内核私有的每个进程状态组成。xv6分时进程:","xv6:一个简单,类unix的教学用操作系统","{","|","}","};","​","一个例外是cd,它是内置在shell(user/sh.c:160)。cd必须更改shell本身的当前工作目录。如果cd作为常规命令运行,那么shell将分出一个子进程,子进程将运行cd,cd将更改子进程的工作目录。父目录(即shell的)的工作目录不会改变。","一个文件的名字和文件本身是不同的;同一个底层文件(叫做inode,索引结点)可以有多个名字(叫做link,链接)。每个链接都由目录中的一个条目组成;该条目包含一个文件名和一个inode引用。inode保存有关文件的元数据(用于解释或帮助理解信息的数据),包括其类型(文件/目录/设备)、长度、文件内容在磁盘上的位置以及指向文件的链接数。","一个进程可以使用fork系统调用创建一个新的进程。fork创建了一个新的进程,其内存内容与调用进程(称为父进程)完全相同,称其为子进程。fork在父子进程中都返回值。在父进程中,fork返回子类的pid;在子进程中,fork返回零。例如,考虑下面用c语言编写的程序片段","上面代码将进程的当前目录更改为/a/b;下面代码既不引用也不更改进程的当前目录","下面的示例代码使用连接到管道读端的标准输入来运行程序wc。","个字节到文件描述符fd;","个字节读入buf;返回读取的字节数;如果文件结束,返回0","为文件file1创建另一个名称(file2)","介绍的基本接口,并且模仿了unix的内部设计。unix提供了一个窄接口,其机制表现突出,提供了令人惊讶的通用程度。这个接口非常成功,甚至现代操作系统bsd、linux、mac","从a读取或写入与从b读取或写入是相同的操作。每个inode由唯一的inode编号标识。在上面的代码序列之后,可以通过检查fstat的结果来确定a和b引用相同的底层内容:两者都将返回相同的inode号(ino),并且nlink计数将被设置为2。","从buf","代码片段中需要注意的重要一点是,cat不知道它是从文件、控制台还是管道读取。同样也不知道它是打印到控制台、文件还是其他什么地方。文件描述符的使用以及文件描述符0是输入而文件描述符1是输出的约定允许了cat的简单实现。","以下程序片段(构成程序cat的本质)将数据从其标准输入复制到其标准输出。如果发生错误,它将消息写入标准错误:","你或许想知道为什么exec和fork没有组合成为一个系统调用,稍后我们将会看到shell在其i/o重定向的实现中利用了这种分离。为了避免创建一个重复的进程然后立即替换它(使用exec)的浪费,操作内核通过使用虚拟内存技术(如copi","其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。","内核使用cpu提供的硬件保护机制来确保每个在用户空间执行的进程只能访问它自己的内存。内核程序的执行拥有操控硬件的权限,它需要实现这些保护;而用户程序执行时没有这些特权。当用户程序调用系统调用时,硬件会提升权限级别,并开始执行内核中预先安排好的函数。","内核提供的系统调用集合是用户程序看到的接口。xv6内核提供了unix内核传统上提供的服务和系统调用的子集。表1.2列出了xv6的所有系统调用。","写n","创建一个新目录","创建一个管道,把write/read文件描述符放在p[0]和p[1]中","创建一个设备文件","创建一个进程,返回子进程的pid","删除一个文件","功能说明","加载一个文件并使用参数执行它;","原则上,可以让内部节点在管道的左端运行,但是正确地这样做会使实现复杂化。考虑进行以下修改:将sh.c更改为不对p","只写","只有在出错时才返回","只读","可以不通过管道实现,如下","可能以任何一种顺序出来,这取决于父或子谁先到达printf调用。子进程退出后,父进程的wait返回,导致父进程打印","可读可写","在内部,xv6内核使用文件描述符作为每个进程表的索引,这样每个进程都有一个从零开始的文件描述符的私有空间。按照惯例,进程从文件描述符0读取(标准输入),将输出写入文件描述符1(标准输出),并将错误消息写入文件描述符2(标准错误)。正如我们将看到的,shell利用这个约定来实现i/o重定向和管道。shell确保它始终有三个打开的文件描述符(user/sh.c:151),这是控制台的默认文件描述符。","在子进程中返回0","在子进程关闭文件描述符0之后,open保证使用新打开的input.txt:0的文件描述符作为最小的可用文件描述符。cat然后执行文件描述符0(标准输入),但引用的是input.txt。父进程的文件描述符不会被这个序列改变,因为它只修改子进程的描述符。","在这个例子中,输出","在这个片段的末尾,附加到文件描述符1的文件将包含数据hello","在这个用例中的实现(见第","在这种情况下,管道相比临时文件至少有四个优势","如图1.1所示,xv6采用传统的内核形式(内核是一个特殊的程序,为正在运行的程序提供服务)。每个正在运行的程序,称为进程,都有包含指令、数据和堆栈的内存。指令实现了程序的运算,数据是计算所依赖的变量,堆栈组织程序的过程调用。一台给定的计算机通常有许多进程,但只有一个内核。","如果两个文件描述符是通过一系列fork和dup调用从同一个原始文件描述符派生出来的,那么它们共享一个偏移量。否则,文件描述符不会共享偏移量,即使它们来自于对同一文件的打开调用。dup允许shell执行这样的命令:l","如果文件不存在则创建文件","如果没有可用的数据,则管道上的read操作等待写入数据或关闭所有指向写入端的文件描述符,在后一种情况下,read将返回0,就像到达数据文件的末尾一样。事实上,read在新数据不可能到达前会一直阻塞,这是子进程在执行上面的wc之前关闭管道的写入端非常重要的一个原因:如果wc的文件描述符之一指向管道的写入端,wc将永远看不到文件的结束。","字节增长进程的内存。返回新内存的开始","它透明地在等待执行的进程集合中切换可用的cpu。当一个进程没有执行时,xv6保存它的cpu寄存器,并在下一次运行该进程时恢复它们。内核利用进程id或pid标识每个进程。","宏定义","将n","将以echo","将打开文件fd的信息放入*st","将指定名称的文件信息放入*st","将文件截断为零长度","将退出状态存入*status;","尽管fork复制了文件描述符表,但是每个基础文件偏移量在父文件和子文件之间是共享的,比如下面的程序:","尽管最初子进程与父进程有着相同的内存内容,但是二者在运行中拥有不同的内存空间和寄存器:在一个进程中改变变量不会影响到另一个进程。例如当wait的返回值存入父进程的变量pid中时,并不会影响子进程中的pid,子进程中pid仍然为0。","常用网址","当一个进程需要调用一个内核服务时,它会调用一个系统调用,这是操作系统接口中的一个调用。系统调用进入内核;内核执行服务并返回。因此,一个进程在用户空间和内核空间之间交替执行。","我的实验仓库:xv6","打开一个文件;flags表示read/write;返回一个fd(文件描述符)","指向文件的链接数","按n","描述","操作系统接口","操作系统的任务是在多个程序之间共享一台计算机,并提供比硬件本身支持的更有用的服务。操作系统管理和抽象底层硬件,例如文字处理器不需要关心使用哪种类型的磁盘硬件。一个操作系统在多个程序之间共享硬件,这样它们就可以(或者看起来可以)同时运行。最后,操作系统为程序提供了可控的交互方式,这样它们就可以共享数据或者一起工作。","操作系统通过接口向用户程序提供服务。设计良好的接口是很困难的。一方面,我们希望接口简单明了,因为这样更利于正确使用。另一方面,我们可能倾向于为应用程序提供许多复杂的特性。解决这个问题的诀窍在于设计接口时,依赖一些可结合的机制,以此来提供更好的通用性。","改变当前的工作目录","文件字节数","文件描述符和fork相互作用,使i/o重定向更容易实现。fork复制父进程的文件描述符表及其内存,以便子级以与父级在开始时拥有完全相同的打开文件。系统调用exec替换了调用进程的内存,但保留其文件表。此行为允许shell通过fork实现i/o重定向,在子进程中重新打开选定的文件描述符,然后调用exec来运行新程序。下面是shell运行命令cat","文件描述符是一个小整数(small","文件描述符是一个强大的抽象,因为它们隐藏了它们所连接的细节:写入文件描述符1的进程可能写入文件、设备(如控制台)或管道。","文件类型","文件系统","文件系统和文件描述符是强大的抽象。即便如此,还有其他的操作系统接口模型。multics,unix的前身,以一种看起来像内存的方式抽象了文件存储,产生了一种非常不同的接口风格。multics设计的复杂性直接影响了unix的设计者,他们试图使设计更简单。","文件系统的磁盘设备","是创建没有名称的临时inode的惯用方法,该临时inode将在进程关闭fd或退出时被清理。","暂停n个时钟节拍","最后一行代码序列中会使inode和文件内容可以作为b访问。此外","本书使用单一的操作系统作为具体的例子来说明操作系统的概念。xv6这个操作系统提供了ken","本书是6.s081最重要的参考书目,其中详细的介绍了xv6的设计细节,在课程前往往需要阅读对应章节,做实验时也要回来查看。","本书研究了xv6如何实现其类unix接口,但这些思想和概念不仅仅适用于unix。任何操作系统都必须在底层硬件上复用进程,彼此隔离进程,并提供受控制的进程间通讯机制。在学习了xv6之后,你应该去看看更复杂的操作系统,以及这些系统中与xv6相同的底层基本概念。","本章的其余部分概述了xv6的服务——进程、内存、文件描述符、管道和文件系统——并用代码片段和关于shell(unix的命令行用户界面)如何使用它们的讨论来阐释。shell对系统调用的使用说明了它们是如何被精心设计的。","现在应该很清楚为什么fork和exec分离的用处了:在这两个调用之间,shell有机会对子进程进行i/o重定向,而不会干扰主shell的i/o设置。我们可以想象一个假设的forkexec系统调用组合,但是用这样的调用进行i/o重定向是很笨拙的。shell可以在调用forkexec之前修改自己的i/o设置(然后撤销这些修改);或者forkexec可以将i/o重定向的指令作为参数;或者(最不吸引人的是)可以让每个程序(如cat)执行自己的i/o重定向。","的代码的简化版本。","相同的文件","真实世界","程序调用pipe,创建一个新的管道,并在数组p中记录读写文件描述符。在fork之后,父子进程都有指向管道的文件描述符。子进程调用close和dup使文件描述符0指向管道的读取端(前面说过优先分配最小的未使用的描述符),然后关闭p中所存的文件描述符,并调用exec运行wc。当wc从它的标准输入读取时,就是从管道读取。父进程关闭管道的读取端,写入管道,然后关闭写入端。","第一章","第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。","第四,如果实现进程间通讯,管道的块读写比文件的非块语义更有效率。","等待一个子进程退出;","管道","管道是作为一对文件描述符公开给进程的小型内核缓冲区,一个用于读取,一个用于写入。将数据写入管道的一端使得这些数据可以从管道的另一端读取。管道为进程提供了一种通信方式。","管道看起来并不比临时文件更强大:下面的管道命令行","系统调用","系统调用write(fd,buf,n)将buf中的n字节写入文件描述符,并返回写入的字节数。只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。","练习","终止对应pid的进程,返回0,或返回","终止当前进程,并将状态报告给wait()函数。无返回","编写一个使用unix系统调用的程序,通过一对管道在两个进程之间“p","节)。","表1.2:xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回","视频翻译:6.s081课程翻译","课程介绍","课程官网:6.s081","课程视频:6.s081","返回n","返回一个新的文件描述符,指向与fd","返回子进程pid。","返回当前进程的pid","还有创建新文件和目录的系统调用:","这个代码片段将调用程序替换为了参数列表为echo","这个例子说明了这三点:","进程和内存","释放打开的文件fd","隐式地分配大多数用户空间内存:fork分配父内存的子副本所需的内存,exec分配足够的内存来保存可执行文件。在运行时需要更多内存的进程(可能是malloc)可以调用","首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"课程介绍","keywords":"","body":"课程介绍\n6.S081 Fall2020是麻省理工2020年秋季的操作系统课程,MIT将学习相关的资源全部公开并放到了官网。本课程中共涉及11个实验,需要花费一定时间来完成。由于是国外的课程,文档资料均为英文,本人英文水平一般,为方便自己后续查阅和其他英文水平一般的同学也能上手本课程,计划将资料全部翻译为中文。并分享课程笔记和实验记录。\n\n常用网址\n\n课程官网:6.S081 Fall 2020\n课程视频:6.S081--bilibili\n\n视频翻译:6.S081课程翻译--gitbook\n\n我的实验仓库:xv6-labs-2020--Github\n\n"},"tranlate_books/book-riscv-rev1/summary.html":{"url":"tranlate_books/book-riscv-rev1/summary.html","title":"book-riscv-rev1","keywords":"","body":"XV6:一个简单,类UNIX的教学用操作系统\n本书是6.S081最重要的参考书目,其中详细的介绍了XV6的设计细节,在课程前往往需要阅读对应章节,做实验时也要回来查看。\n"},"tranlate_books/book-riscv-rev1/c1/s1_0.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_0.html","title":"第一章 操作系统接口","keywords":"","body":"第一章 操作系统接口\n操作系统的任务是在多个程序之间共享一台计算机,并提供比硬件本身支持的更有用的服务。操作系统管理和抽象底层硬件,例如文字处理器不需要关心使用哪种类型的磁盘硬件。一个操作系统在多个程序之间共享硬件,这样它们就可以(或者看起来可以)同时运行。最后,操作系统为程序提供了可控的交互方式,这样它们就可以共享数据或者一起工作。\n操作系统通过接口向用户程序提供服务。设计良好的接口是很困难的。一方面,我们希望接口简单明了,因为这样更利于正确使用。另一方面,我们可能倾向于为应用程序提供许多复杂的特性。解决这个问题的诀窍在于设计接口时,依赖一些可结合的机制,以此来提供更好的通用性。\n本书使用单一的操作系统作为具体的例子来说明操作系统的概念。xv6这个操作系统提供了Ken Thompson和Dennis Ritchie的Unix 介绍的基本接口,并且模仿了Unix的内部设计。Unix提供了一个窄接口,其机制表现突出,提供了令人惊讶的通用程度。这个接口非常成功,甚至现代操作系统BSD、Linux、Mac OSX、Solaris,甚至在一定程度上,Microsoft windows都有类Unix的接口。理解xv6是理解这些系统和其他系统的一个良好开端。\n如图1.1所示,xv6采用传统的内核形式(内核是一个特殊的程序,为正在运行的程序提供服务)。每个正在运行的程序,称为进程,都有包含指令、数据和堆栈的内存。指令实现了程序的运算,数据是计算所依赖的变量,堆栈组织程序的过程调用。一台给定的计算机通常有许多进程,但只有一个内核。\n\n当一个进程需要调用一个内核服务时,它会调用一个系统调用,这是操作系统接口中的一个调用。系统调用进入内核;内核执行服务并返回。因此,一个进程在用户空间和内核空间之间交替执行。\n内核使用CPU提供的硬件保护机制来确保每个在用户空间执行的进程只能访问它自己的内存。内核程序的执行拥有操控硬件的权限,它需要实现这些保护;而用户程序执行时没有这些特权。当用户程序调用系统调用时,硬件会提升权限级别,并开始执行内核中预先安排好的函数。\n内核提供的系统调用集合是用户程序看到的接口。Xv6内核提供了Unix内核传统上提供的服务和系统调用的子集。表1.2列出了xv6的所有系统调用。\n\n\n\n系统调用\n描述\n\n\n\n\nint fork()\n创建一个进程,返回子进程的PID\n\n\nint exit(int status)\n终止当前进程,并将状态报告给wait()函数。无返回\n\n\nint wait(int *status)\n等待一个子进程退出; 将退出状态存入*status; 返回子进程PID。\n\n\nint kill(int pid)\n终止对应PID的进程,返回0,或返回-1表示错误\n\n\nint getpid()\n返回当前进程的PID\n\n\nint sleep(int n)\n暂停n个时钟节拍\n\n\nint exec(char file, char argv[])\n加载一个文件并使用参数执行它; 只有在出错时才返回\n\n\nchar *sbrk(int n)\n按n 字节增长进程的内存。返回新内存的开始\n\n\nint open(char *file, int flags)\n打开一个文件;flags表示read/write;返回一个fd(文件描述符)\n\n\nint write(int fd, char *buf, int n)\n从buf 写n 个字节到文件描述符fd; 返回n\n\n\nint read(int fd, char *buf, int n)\n将n 个字节读入buf;返回读取的字节数;如果文件结束,返回0\n\n\nint close(int fd)\n释放打开的文件fd\n\n\nint dup(int fd)\n返回一个新的文件描述符,指向与fd 相同的文件\n\n\nint pipe(int p[])\n创建一个管道,把write/read文件描述符放在p[0]和p[1]中\n\n\nint chdir(char *dir)\n改变当前的工作目录\n\n\nint mkdir(char *dir)\n创建一个新目录\n\n\nint mknod(char *file, int, int)\n创建一个设备文件\n\n\nint fstat(int fd, struct stat *st)\n将打开文件fd的信息放入*st\n\n\nint stat(char file, struct stat st)\n将指定名称的文件信息放入*st\n\n\nint link(char file1, char file2)\n为文件file1创建另一个名称(file2)\n\n\nint unlink(char *file)\n删除一个文件\n\n\n\n​ 表1.2:xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回-1表示出错)\n\n本章的其余部分概述了xv6的服务——进程、内存、文件描述符、管道和文件系统——并用代码片段和关于shell(Unix的命令行用户界面)如何使用它们的讨论来阐释。Shell对系统调用的使用说明了它们是如何被精心设计的。\nShell是一个普通的程序,它从用户那里读取命令并执行它们。Shell是一个用户程序,而不是内核的一部分,这一事实说明了系统调用接口的强大之处:shell没有什么特别之处。这也意味着shell很容易替换;因此,现代Unix系统有多种shell可供选择,每种shell都有自己的用户界面和脚本特性。Xv6 Shell是Unix Bourne shell本质的简单实现。它的实现可以在(user/sh.c:1)中找到.\n"},"tranlate_books/book-riscv-rev1/c1/s1_1.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_1.html","title":"1.1 进程和内存","keywords":"","body":"1.1 进程和内存\nXv6进程由用户空间内存(指令、数据和堆栈)和对内核私有的每个进程状态组成。Xv6分时进程: 它透明地在等待执行的进程集合中切换可用的CPU。当一个进程没有执行时,xv6保存它的CPU寄存器,并在下一次运行该进程时恢复它们。内核利用进程id或PID标识每个进程。\n一个进程可以使用fork系统调用创建一个新的进程。Fork创建了一个新的进程,其内存内容与调用进程(称为父进程)完全相同,称其为子进程。Fork在父子进程中都返回值。在父进程中,fork返回子类的PID;在子进程中,fork返回零。例如,考虑下面用C语言编写的程序片段\n// fork()在父进程中返回子进程的PID\n// 在子进程中返回0\nint pid = fork();\nif(pid > 0) {\n printf(\"parent: child=%d\\n\", pid);\n pid = wait((int *) 0);\n printf(\"child %d is done\\n\", pid);\n} else if(pid == 0) {\n printf(\"child: exiting\\n\");\n exit(0);\n} else {\n printf(\"fork error\\n\");\n}\n\nexit系统调用导致调用进程停止执行并释放资源(如内存和打开的文件)。exit接受一个整数状态参数,通常0表示成功,1表示失败。wait系统调用返回当前进程的已退出(或已杀死)子进程的PID,并将子进程的退出状态复制到传递给wait的地址;如果调用方的子进程都没有退出,那么wait等待一个子进程退出。如果调用者没有子级,wait立即返回-1。如果父进程不关心子进程的退出状态,它可以传递一个0地址给wait。\n在这个例子中,输出\nparent: child=1234\nchild: exiting\n可能以任何一种顺序出来,这取决于父或子谁先到达printf调用。子进程退出后,父进程的wait返回,导致父进程打印\nparent: child 1234 is done\n尽管最初子进程与父进程有着相同的内存内容,但是二者在运行中拥有不同的内存空间和寄存器:在一个进程中改变变量不会影响到另一个进程。例如当wait的返回值存入父进程的变量pid中时,并不会影响子进程中的pid,子进程中pid仍然为0。\nexec系统调用使用从文件系统中存储的文件所加载的新内存映像替换调用进程的内存。(百度百科:根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件)该文件必须有特殊的格式,它指定文件的哪部分存放指令,哪部分是数据,以及哪一条指令用于启动等等。xv6使用ELF格式(将会在第三章详细讨论)。当exec执行成功,它不向调用进程返回数据,而是使加载自文件的指令在ELF header中声明的程序入口处开始执行。exec有两个参数:可执行文件的文件名和字符串参数数组。例如\nchar* argv[3];\nargv[0] = \"echo\";\nargv[1] = \"hello\";\nargv[2] = 0;\nexec(\"/bin/echo\", argv);\nprintf(\"exec error\\n\");\n\n这个代码片段将调用程序替换为了参数列表为echo hello的/bin/echo程序运行,多数程序忽略参数数组中的第一个元素,它通常是程序名。\nxv6的shell使用上述调用为用户运行程序。shell的主要结构很简单,请参见main(user/sh.c:145)。主循环使用getcmd函数从用户的输入中读取一行,然后调用fork创建一个shell进程的副本。父进程调用wait,子进程执行命令。例如:当用户向shell输入echo hello时,runcmd(user/sh.c:58) 将以echo hello为参数被调用来执行实际命令。对于“echo hello”,它将调用exec(user/sh.c:78)。如果exec成功,那么子进程将从echo而不是runcmd执行命令,在某刻echo会调用exit,这将导致父进程从main(user/sh.c:78)中的wait返回。\n你或许想知道为什么exec和fork没有组合成为一个系统调用,稍后我们将会看到shell在其I/O重定向的实现中利用了这种分离。为了避免创建一个重复的进程然后立即替换它(使用exec)的浪费,操作内核通过使用虚拟内存技术(如copy-on-write)优化 fork 在这个用例中的实现(见第 4.6 节)。\nXv6 隐式地分配大多数用户空间内存:fork分配父内存的子副本所需的内存,exec分配足够的内存来保存可执行文件。在运行时需要更多内存的进程(可能是malloc)可以调用 sbrk(n)将其数据内存增加n个字节; sbrk返回新内存的位置。\n"},"tranlate_books/book-riscv-rev1/c1/s1_2.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_2.html","title":"1.2 I/O和文件描述符","keywords":"","body":"1.2 I/O和文件描述符\n文件描述符是一个小整数(small integer),表示进程可以读取或写入的由内核管理的对象。进程可以通过打开一个文件、目录、设备,或创建一个管道,或复制一个已存在的描述符来获得一个文件描述符。为了简单起见,我们通常将文件描述符所指的对象称为“文件”;文件描述符接口将文件、管道和设备之间的差异抽象出来,使它们看起来都像字节流。我们将输入和输出称为 I/O。\n在内部,xv6内核使用文件描述符作为每个进程表的索引,这样每个进程都有一个从零开始的文件描述符的私有空间。按照惯例,进程从文件描述符0读取(标准输入),将输出写入文件描述符1(标准输出),并将错误消息写入文件描述符2(标准错误)。正如我们将看到的,shell利用这个约定来实现I/O重定向和管道。shell确保它始终有三个打开的文件描述符(user/sh.c:151),这是控制台的默认文件描述符。\nread和write系统调用以字节为单位读取或写入已打开的以文件描述符命名的文件。read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf,并返回读取的字节数,引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。\n系统调用write(fd,buf,n)将buf中的n字节写入文件描述符,并返回写入的字节数。只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。\n以下程序片段(构成程序cat的本质)将数据从其标准输入复制到其标准输出。如果发生错误,它将消息写入标准错误:\nchar buf[512];\nint n;\nfor (;;) {\n n = read(0, buf, sizeof buf);\n if (n == 0)\n break;\n if (n < 0) {\n fprintf(2, \"read error\\n\");\n exit(1);\n }\n if (write(1, buf, n) != n) {\n fprintf(2, \"write error\\n\");\n exit(1);\n }\n}\n\n代码片段中需要注意的重要一点是,cat不知道它是从文件、控制台还是管道读取。同样也不知道它是打印到控制台、文件还是其他什么地方。文件描述符的使用以及文件描述符0是输入而文件描述符1是输出的约定允许了cat的简单实现。\nclose系统调用释放一个文件描述符,使其可以被未来使用的open、pipe或dup系统调用重用(见下文)。新分配的文件描述符总是当前进程中编号最小的未使用描述符。\n文件描述符和fork相互作用,使I/O重定向更容易实现。fork复制父进程的文件描述符表及其内存,以便子级以与父级在开始时拥有完全相同的打开文件。系统调用exec替换了调用进程的内存,但保留其文件表。此行为允许shell通过fork实现I/O重定向,在子进程中重新打开选定的文件描述符,然后调用exec来运行新程序。下面是shell运行命令cat 的代码的简化版本。\nchar* argv[2];\nargv[0] = \"cat\";\nargv[1] = 0;\nif (fork() == 0) {\n close(0);\n open(\"input.txt\", O_RDONLY);\n exec(\"cat\", argv);\n}\n\n在子进程关闭文件描述符0之后,open保证使用新打开的input.txt:0的文件描述符作为最小的可用文件描述符。cat然后执行文件描述符0(标准输入),但引用的是input.txt。父进程的文件描述符不会被这个序列改变,因为它只修改子进程的描述符。\nXv6shell中的I/O重定向代码就是这样工作的(user/sh.c:82)。回想一下,在代码执行到这里时,shell已经fork出了子shell,runcmd将调用exec来加载新程序。\nopen的第二个参数由一组标志组成,这些标志以位表示,用于控制打开的操作。可能的值定义在文件控制(fcntl)头文件(kernel/fcntl.h:1-5)中\n\n\n\n宏定义\n功能说明\n\n\n\n\nO_RDONLY\n只读\n\n\nO_WRONLY\n只写\n\n\nO_RDWR\n可读可写\n\n\nO_CREATE\n如果文件不存在则创建文件\n\n\nO_TRUNC\n将文件截断为零长度\n\n\n\n现在应该很清楚为什么fork和exec分离的用处了:在这两个调用之间,shell有机会对子进程进行I/O重定向,而不会干扰主shell的I/O设置。我们可以想象一个假设的forkexec系统调用组合,但是用这样的调用进行I/O重定向是很笨拙的。Shell可以在调用forkexec之前修改自己的I/O设置(然后撤销这些修改);或者forkexec可以将I/O重定向的指令作为参数;或者(最不吸引人的是)可以让每个程序(如cat)执行自己的I/O重定向。\n尽管fork复制了文件描述符表,但是每个基础文件偏移量在父文件和子文件之间是共享的,比如下面的程序:\nif (fork() == 0) {\n write(1, \"hello \", 6);\n exit(0);\n} else {\n wait(0);\n write(1, \"world\\n\", 6);\n}\n\n在这个片段的末尾,附加到文件描述符1的文件将包含数据hello world。父进程中的写操作(由于等待,只有在子进程完成后才运行)在子进程停止写入的位置进行。这种行为有助于从shell命令序列产生顺序输出,比如(echo hello;echo world) >output.txt。\ndup系统调用复制一个现有的文件描述符,返回一个引用自同一个底层I/O对象的新文件描述符。两个文件描述符共享一个偏移量,就像fork复制的文件描述符一样。这是另一种将“hello world”写入文件的方法:\nfd = dup(1);\nwrite(1, \"hello \", 6);\nwrite(fd, \"world\\n\", 6);\n\n如果两个文件描述符是通过一系列fork和dup调用从同一个原始文件描述符派生出来的,那么它们共享一个偏移量。否则,文件描述符不会共享偏移量,即使它们来自于对同一文件的打开调用。dup允许shell执行这样的命令:ls existing-file non-existing-file > tmp1 2>&1。2>&1告诉shell给命令的文件描述符2是描述符1的副本。现有文件的名称和不存在文件的错误信息都会显示在tmp1文件中。Xv6 shell不支持错误文件描述符的I/O重定向,但是现在你知道如何实现它了。\n文件描述符是一个强大的抽象,因为它们隐藏了它们所连接的细节:写入文件描述符1的进程可能写入文件、设备(如控制台)或管道。\n"},"tranlate_books/book-riscv-rev1/c1/s1_3.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_3.html","title":"1.3 管道","keywords":"","body":"1.3 管道\n管道是作为一对文件描述符公开给进程的小型内核缓冲区,一个用于读取,一个用于写入。将数据写入管道的一端使得这些数据可以从管道的另一端读取。管道为进程提供了一种通信方式。\n下面的示例代码使用连接到管道读端的标准输入来运行程序wc。\nint p[2];\nchar *argv[2];\nargv[0] = \"wc\";\nargv[1] = 0;\npipe(p);\nif (fork() == 0) {\n close(0);\n dup(p[0]);\n close(p[0]);\n close(p[1]);\n exec(\"/bin/wc\", argv);\n} else {\n close(p[0]);\n write(p[1], \"hello world\\n\", 12);\n close(p[1]);\n}\n\n程序调用pipe,创建一个新的管道,并在数组p中记录读写文件描述符。在fork之后,父子进程都有指向管道的文件描述符。子进程调用close和dup使文件描述符0指向管道的读取端(前面说过优先分配最小的未使用的描述符),然后关闭p中所存的文件描述符,并调用exec运行wc。当wc从它的标准输入读取时,就是从管道读取。父进程关闭管道的读取端,写入管道,然后关闭写入端。\n如果没有可用的数据,则管道上的read操作等待写入数据或关闭所有指向写入端的文件描述符,在后一种情况下,read将返回0,就像到达数据文件的末尾一样。事实上,read在新数据不可能到达前会一直阻塞,这是子进程在执行上面的wc之前关闭管道的写入端非常重要的一个原因:如果wc的文件描述符之一指向管道的写入端,wc将永远看不到文件的结束。\nXv6 shell以类似于上面代码(user/sh.c:100)的方式实现了诸如grep fork sh.c | wc -l之类的管道。子进程创建一个管道将管道的左端和右端连接起来。然后对管道的左端调用fork和runcmd,对管道的右端调用fork和runcmd,并等待两者都完成。管道的右端可能是一个命令,该命令本身包含一个管道(例如,a | b | c),该管道本身fork为两个新的子进程(一个用于b,一个用于c)。因此,shell可以创建一个进程树。这个树的叶子是命令,内部节点是等待左右两个子进程完成的进程。\n原则上,可以让内部节点在管道的左端运行,但是正确地这样做会使实现复杂化。考虑进行以下修改:将sh.c更改为不对p->left进行fork,并在内部进程中运行runcmd(p->left)。然后,例如,echo hi | wc将不会产生输出,因为当echo hi在runcmd中退出时,内部进程将退出,而不会调用fork来运行管道的右端。这个不正确的行为可以通过不调用内部进程的runcmd中的exit来修复,但是这个修复使代码复杂化:现在runcmd需要知道它是否是一个内部进程。同样的,当没有对(p->right)执行fork时也会更加复杂。例如,只需进行上述的修改,sleep 10 | echo hi将立即打印“hi”,而不是在10秒后,因为echo将立即运行并退出,而不是等待sleep完成。因为sh.c的目标是尽可能的简单,所以它不会试图避免创建内部进程。\n管道看起来并不比临时文件更强大:下面的管道命令行\necho hello world | wc\n\n可以不通过管道实现,如下\necho hello world > /tmp/xyz; wc \n在这种情况下,管道相比临时文件至少有四个优势\n\n首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除\n\n其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。\n\n第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。\n\n第四,如果实现进程间通讯,管道的块读写比文件的非块语义更有效率。\n\n\n"},"tranlate_books/book-riscv-rev1/c1/s1_4.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_4.html","title":"1.4 文件系统","keywords":"","body":"1.4 文件系统\nXv6文件系统提供数据文件(包含未解释的字节数组)和目录(包含对数据文件和其他目录的命名引用)。这些目录形成一个树,从一个叫做根的特殊目录开始。像/a/b/c这样的路径是指在根目录/下名为a的目录中名为b的目录中名为c的文件或目录。不以/开始的路径相对于调用进程的当前工作目录进行计算,当前工作目录可以通过chdir系统调用进行更改。下面两个代码片段打开相同的文件(假设所有相关的目录都存在)\nchdir(\"/a\");\nchdir(\"b\");\nopen(\"c\", O_RDONLY);\nopen(\"/a/b/c\", O_RDONLY);\n\n上面代码将进程的当前目录更改为/a/b;下面代码既不引用也不更改进程的当前目录\n还有创建新文件和目录的系统调用:\n\nmkdir创建一个新目录\n\nopen中若使用O_CREATE标志将会创建一个新的数据文件\n\nmknod创建一个新的设备文件\n\n\n这个例子说明了这三点:\nmkdir(\"/dir\");\nfd = open(\"/dir/file\", O_CREATE | O_WRONLY);\nclose(fd);\nmknod(\"/console\", 1, 1);\n\nmknod创建一个引用设备的特殊文件。与设备文件相关联的是主设备号和次设备号(mknod的两个参数),它们唯一地标识了一个内核设备。当进程稍后打开设备文件时,内核将使用内核设备实现read和write系统调用,而不是使用文件系统。\n一个文件的名字和文件本身是不同的;同一个底层文件(叫做inode,索引结点)可以有多个名字(叫做link,链接)。每个链接都由目录中的一个条目组成;该条目包含一个文件名和一个inode引用。Inode保存有关文件的元数据(用于解释或帮助理解信息的数据),包括其类型(文件/目录/设备)、长度、文件内容在磁盘上的位置以及指向文件的链接数。\nfstat系统调用从文件描述符所引用的inode中检索信息。它填充一个stat类型的结构体,struct stat在stat.h(kernel/stat.h)中定义为\n#define T_DIR 1 // Directory\n#define T_FILE 2 // File\n#define T_DEVICE 3 // Device\nstruct stat {\n int dev; // 文件系统的磁盘设备\n uint ino; // Inode编号\n short type; // 文件类型\n short nlink; // 指向文件的链接数\n uint64 size; // 文件字节数\n};\n\nlink系统调用创建另一个文件名,该文件名指向与现有文件相同的inode。下面的代码片段创建了一个名字既为a又为b的新文件\nopen(\"a\", O_CREATE | O_WRONLY);\nlink(\"a\", \"b\");\n\n从a读取或写入与从b读取或写入是相同的操作。每个inode由唯一的inode编号标识。在上面的代码序列之后,可以通过检查fstat的结果来确定a和b引用相同的底层内容:两者都将返回相同的inode号(ino),并且nlink计数将被设置为2。\nunlink系统调用从文件系统中删除一个名称。只有当文件的链接数为零且没有文件描述符引用时,文件的inode和包含其内容的磁盘空间才会被释放,因此添加\nunlink(\"a\");\n\n最后一行代码序列中会使inode和文件内容可以作为b访问。此外\nfd = open(\"/tmp/xyz\", O_CREATE | O_RDWR);\nunlink(\"/tmp/xyz\");\n\n是创建没有名称的临时inode的惯用方法,该临时inode将在进程关闭fd或退出时被清理。\nUnix以用户级程序的形式提供了可从shell调用的文件实用程序,例如mkdir、ln和rm。这种设计允许任何人通过添加新的用户级程序来扩展命令行接口。事后看来,这个计划似乎是显而易见的,但是在Unix时代设计的其他系统经常将这样的命令构建到shell中(并将shell构建到内核中)\n一个例外是cd,它是内置在shell(user/sh.c:160)。cd必须更改shell本身的当前工作目录。如果cd作为常规命令运行,那么shell将分出一个子进程,子进程将运行cd,cd将更改子进程的工作目录。父目录(即shell的)的工作目录不会改变。\n"},"tranlate_books/book-riscv-rev1/c1/s1_5.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_5.html","title":"1.5 真实世界","keywords":"","body":"1.5 真实世界\nUnix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作,这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化,这种文化对Unix的强大和流行做出了卓越贡献,shell是第一个所谓的“脚本语言”。Unix系统调用接口今天仍然存在于BSD、Linux和MacOSx等系统中。\nUnix系统调用接口已经通过便携式操作系统接口(POSIX)标准进行了标准化。Xv6与POSIX不兼容:它缺少许多系统调用(包括lseek等基本系统调用),并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了,同时提供一个简单的类unix系统调用接口。为了运行基本的Unix程序,有些人扩展了xv6,增加了一些系统调用和一个简单的c库。然而,现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如,它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展,提供了许多超越POSIX的特性。\nUnix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是Plan9,它将“资源是文件”的概念应用到网络、图形等等。然而,大多数unix衍生的操作系统并没有遵循这条路。\n文件系统和文件描述符是强大的抽象。即便如此,还有其他的操作系统接口模型。Multics,Unix的前身,以一种看起来像内存的方式抽象了文件存储,产生了一种非常不同的接口风格。Multics设计的复杂性直接影响了Unix的设计者,他们试图使设计更简单。\nXv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用Unix的术语来说,所有的Xv6进程都作为root运行。\n本书研究了xv6如何实现其类Unix接口,但这些思想和概念不仅仅适用于Unix。任何操作系统都必须在底层硬件上复用进程,彼此隔离进程,并提供受控制的进程间通讯机制。在学习了xv6之后,你应该去看看更复杂的操作系统,以及这些系统中与xv6相同的底层基本概念。\n"},"tranlate_books/book-riscv-rev1/c1/s1_6.html":{"url":"tranlate_books/book-riscv-rev1/c1/s1_6.html","title":"1.6 练习","keywords":"","body":"1.6 练习\n编写一个使用UNIX系统调用的程序,通过一对管道在两个进程之间“ping-pong”一个字节(也就是像打乒乓球一样来回传递),每个方向一个管道。以每秒的交换次数为单位,测量程序的性能。\n"}}} \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_0.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_0.html new file mode 100644 index 0000000..86fcdd4 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_0.html @@ -0,0 +1,505 @@ + + + + + + + 第一章 操作系统接口 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + +
+
+ +
+
+ +
+ +

第一章 操作系统接口

+

操作系统的任务是在多个程序之间共享一台计算机,并提供比硬件本身支持的更有用的服务。操作系统管理和抽象底层硬件,例如文字处理器不需要关心使用哪种类型的磁盘硬件。一个操作系统在多个程序之间共享硬件,这样它们就可以(或者看起来可以)同时运行。最后,操作系统为程序提供了可控的交互方式,这样它们就可以共享数据或者一起工作。

+

操作系统通过接口向用户程序提供服务。设计良好的接口是很困难的。一方面,我们希望接口简单明了,因为这样更利于正确使用。另一方面,我们可能倾向于为应用程序提供许多复杂的特性。解决这个问题的诀窍在于设计接口时,依赖一些可结合的机制,以此来提供更好的通用性。

+

本书使用单一的操作系统作为具体的例子来说明操作系统的概念。xv6这个操作系统提供了Ken Thompson和Dennis Ritchie的Unix 介绍的基本接口,并且模仿了Unix的内部设计。Unix提供了一个窄接口,其机制表现突出,提供了令人惊讶的通用程度。这个接口非常成功,甚至现代操作系统BSD、Linux、Mac OSX、Solaris,甚至在一定程度上,Microsoft windows都有类Unix的接口。理解xv6是理解这些系统和其他系统的一个良好开端。

+

如图1.1所示,xv6采用传统的内核形式(内核是一个特殊的程序,为正在运行的程序提供服务)。每个正在运行的程序,称为进程,都有包含指令、数据和堆栈的内存。指令实现了程序的运算,数据是计算所依赖的变量,堆栈组织程序的过程调用。一台给定的计算机通常有许多进程,但只有一个内核。

+

img

+

当一个进程需要调用一个内核服务时,它会调用一个系统调用,这是操作系统接口中的一个调用。系统调用进入内核;内核执行服务并返回。因此,一个进程在用户空间和内核空间之间交替执行。

+

内核使用CPU提供的硬件保护机制来确保每个在用户空间执行的进程只能访问它自己的内存。内核程序的执行拥有操控硬件的权限,它需要实现这些保护;而用户程序执行时没有这些特权。当用户程序调用系统调用时,硬件会提升权限级别,并开始执行内核中预先安排好的函数。

+

内核提供的系统调用集合是用户程序看到的接口。Xv6内核提供了Unix内核传统上提供的服务和系统调用的子集。表1.2列出了xv6的所有系统调用。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
系统调用描述
int fork()创建一个进程,返回子进程的PID
int exit(int status)终止当前进程,并将状态报告给wait()函数。无返回
int wait(int *status)等待一个子进程退出; 将退出状态存入*status; 返回子进程PID。
int kill(int pid)终止对应PID的进程,返回0,或返回-1表示错误
int getpid()返回当前进程的PID
int sleep(int n)暂停n个时钟节拍
int exec(char file, char argv[])加载一个文件并使用参数执行它; 只有在出错时才返回
char *sbrk(int n)按n 字节增长进程的内存。返回新内存的开始
int open(char *file, int flags)打开一个文件;flags表示read/write;返回一个fd(文件描述符)
int write(int fd, char *buf, int n)从buf 写n 个字节到文件描述符fd; 返回n
int read(int fd, char *buf, int n)将n 个字节读入buf;返回读取的字节数;如果文件结束,返回0
int close(int fd)释放打开的文件fd
int dup(int fd)返回一个新的文件描述符,指向与fd 相同的文件
int pipe(int p[])创建一个管道,把write/read文件描述符放在p[0]和p[1]中
int chdir(char *dir)改变当前的工作目录
int mkdir(char *dir)创建一个新目录
int mknod(char *file, int, int)创建一个设备文件
int fstat(int fd, struct stat *st)将打开文件fd的信息放入*st
int stat(char file, struct stat st)将指定名称的文件信息放入*st
int link(char file1, char file2)为文件file1创建另一个名称(file2)
int unlink(char *file)删除一个文件
+

​ 表1.2:xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回-1表示出错)

+
+

本章的其余部分概述了xv6的服务——进程、内存、文件描述符、管道和文件系统——并用代码片段和关于shell(Unix的命令行用户界面)如何使用它们的讨论来阐释。Shell对系统调用的使用说明了它们是如何被精心设计的。

+

Shell是一个普通的程序,它从用户那里读取命令并执行它们。Shell是一个用户程序,而不是内核的一部分,这一事实说明了系统调用接口的强大之处:shell没有什么特别之处。这也意味着shell很容易替换;因此,现代Unix系统有多种shell可供选择,每种shell都有自己的用户界面和脚本特性。Xv6 Shell是Unix Bourne shell本质的简单实现。它的实现可以在(user/sh.c:1)中找到.

+ + +
+ +
+
+
+ +

results matching ""

+
    + +
    +
    + +

    No results matching ""

    + +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_0.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_0.md new file mode 100644 index 0000000..3e27f65 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_0.md @@ -0,0 +1,53 @@ +# 第一章 操作系统接口 + +操作系统的任务是在多个程序之间共享一台计算机,并提供比硬件本身支持的更有用的服务。操作系统管理和抽象底层硬件,例如文字处理器不需要关心使用哪种类型的磁盘硬件。一个操作系统在多个程序之间共享硬件,这样它们就可以(或者看起来可以)同时运行。最后,操作系统为程序提供了可控的交互方式,这样它们就可以共享数据或者一起工作。 + +操作系统通过接口向用户程序提供服务。设计良好的接口是很困难的。一方面,我们希望接口简单明了,因为这样更利于正确使用。另一方面,我们可能倾向于为应用程序提供许多复杂的特性。解决这个问题的诀窍在于设计接口时,依赖一些可结合的机制,以此来提供更好的通用性。 + +本书使用单一的操作系统作为具体的例子来说明操作系统的概念。xv6这个操作系统提供了Ken Thompson和Dennis Ritchie的Unix 介绍的基本接口,并且模仿了Unix的内部设计。Unix提供了一个窄接口,其机制表现突出,提供了令人惊讶的通用程度。这个接口非常成功,甚至现代操作系统BSD、Linux、Mac OSX、Solaris,甚至在一定程度上,Microsoft windows都有类Unix的接口。理解xv6是理解这些系统和其他系统的一个良好开端。 + +如图1.1所示,xv6采用传统的内核形式(内核是一个特殊的程序,为正在运行的程序提供服务)。每个正在运行的程序,称为进程,都有包含指令、数据和堆栈的内存。指令实现了程序的运算,数据是计算所依赖的变量,堆栈组织程序的过程调用。一台给定的计算机通常有许多进程,但只有一个内核。 + +![img](../images/c1/p1.png) + +当一个进程需要调用一个内核服务时,它会调用一个系统调用,这是操作系统接口中的一个调用。系统调用进入内核;内核执行服务并返回。因此,一个进程在用户空间和内核空间之间交替执行。 + +内核使用CPU提供的硬件保护机制来确保每个在用户空间执行的进程只能访问它自己的内存。内核程序的执行拥有操控硬件的权限,它需要实现这些保护;而用户程序执行时没有这些特权。当用户程序调用系统调用时,硬件会提升权限级别,并开始执行内核中预先安排好的函数。 + +内核提供的系统调用集合是用户程序看到的接口。Xv6内核提供了Unix内核传统上提供的服务和系统调用的子集。表1.2列出了xv6的所有系统调用。 + +| **系统调用** | **描述** | +| ------------------------------------- | ------------------------------------------------------------ | +| int fork() | 创建一个进程,返回子进程的PID | +| int exit(int status) | 终止当前进程,并将状态报告给wait()函数。无返回 | +| int wait(int *status) | 等待一个子进程退出; 将退出状态存入`*status`; 返回子进程PID。 | +| int kill(int pid) | 终止对应PID的进程,返回0,或返回-1表示错误 | +| int getpid() | 返回当前进程的PID | +| int sleep(int n) | 暂停n个时钟节拍 | +| int exec(char *file, char *argv[]) | 加载一个文件并使用参数执行它; 只有在出错时才返回 | +| char *sbrk(int n) | 按n 字节增长进程的内存。返回新内存的开始 | +| int open(char *file, int flags) | 打开一个文件;flags表示read/write;返回一个fd(文件描述符) | +| int write(int fd, char *buf, int n) | 从buf 写n 个字节到文件描述符fd; 返回n | +| int read(int fd, char *buf, int n) | 将n 个字节读入buf;返回读取的字节数;如果文件结束,返回0 | +| int close(int fd) | 释放打开的文件fd | +| int dup(int fd) | 返回一个新的文件描述符,指向与fd 相同的文件 | +| int pipe(int p[]) | 创建一个管道,把write/read文件描述符放在p[0]和p[1]中 | +| int chdir(char *dir) | 改变当前的工作目录 | +| int mkdir(char *dir) | 创建一个新目录 | +| int mknod(char *file, int, int) | 创建一个设备文件 | +| int fstat(int fd, struct stat *st) | 将打开文件fd的信息放入*st | +| int stat(char *file, struct stat *st) | 将指定名称的文件信息放入*st | +| int link(char *file1, char *file2) | 为文件file1创建另一个名称(file2) | +| int unlink(char *file) | 删除一个文件 | + +​ 表1.2:xv6系统调用(除非另外声明,这些系统调用返回0表示无误,返回-1表示出错) + + + +--- + + + +本章的其余部分概述了xv6的服务——进程、内存、文件描述符、管道和文件系统——并用代码片段和关于shell(Unix的命令行用户界面)如何使用它们的讨论来阐释。Shell对系统调用的使用说明了它们是如何被精心设计的。 + +Shell是一个普通的程序,它从用户那里读取命令并执行它们。Shell是一个用户程序,而不是内核的一部分,这一事实说明了系统调用接口的强大之处:shell没有什么特别之处。这也意味着shell很容易替换;因此,现代Unix系统有多种shell可供选择,每种shell都有自己的用户界面和脚本特性。Xv6 Shell是Unix Bourne shell本质的简单实现。它的实现可以在(user/sh.c:1)中找到. diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_1.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_1.html new file mode 100644 index 0000000..9ecee72 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_1.html @@ -0,0 +1,434 @@ + + + + + + + 1.1 进程和内存 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + +
    + +
    + + + + + + + + +
    +
    + +
    +
    + +
    + +

    1.1 进程和内存

    +

    Xv6进程由用户空间内存(指令、数据和堆栈)和对内核私有的每个进程状态组成。Xv6分时进程: 它透明地在等待执行的进程集合中切换可用的CPU。当一个进程没有执行时,xv6保存它的CPU寄存器,并在下一次运行该进程时恢复它们。内核利用进程id或PID标识每个进程。

    +

    一个进程可以使用fork系统调用创建一个新的进程。Fork创建了一个新的进程,其内存内容与调用进程(称为父进程)完全相同,称其为子进程。Fork在父子进程中都返回值。在父进程中,fork返回子类的PID;在子进程中,fork返回零。例如,考虑下面用C语言编写的程序片段

    +
    // fork()在父进程中返回子进程的PID
    +// 在子进程中返回0
    +int pid = fork();
    +if(pid > 0) {
    +    printf("parent: child=%d\n", pid);
    +    pid = wait((int *) 0);
    +    printf("child %d is done\n", pid);
    +} else if(pid == 0) {
    +    printf("child: exiting\n");
    +    exit(0);
    +} else {
    +    printf("fork error\n");
    +}
    +
    +

    exit系统调用导致调用进程停止执行并释放资源(如内存和打开的文件)。exit接受一个整数状态参数,通常0表示成功,1表示失败。wait系统调用返回当前进程的已退出(或已杀死)子进程的PID,并将子进程的退出状态复制到传递给wait的地址;如果调用方的子进程都没有退出,那么wait等待一个子进程退出。如果调用者没有子级,wait立即返回-1。如果父进程不关心子进程的退出状态,它可以传递一个0地址给wait

    +

    在这个例子中,输出

    +
    parent: child=1234
    +child: exiting
    +

    可能以任何一种顺序出来,这取决于父或子谁先到达printf调用。子进程退出后,父进程的wait返回,导致父进程打印

    +
    parent: child 1234 is done
    +

    尽管最初子进程与父进程有着相同的内存内容,但是二者在运行中拥有不同的内存空间和寄存器:在一个进程中改变变量不会影响到另一个进程。例如当wait的返回值存入父进程的变量pid中时,并不会影响子进程中的pid,子进程中pid仍然为0。

    +

    exec系统调用使用从文件系统中存储的文件所加载的新内存映像替换调用进程的内存。(百度百科:根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件)该文件必须有特殊的格式,它指定文件的哪部分存放指令,哪部分是数据,以及哪一条指令用于启动等等。xv6使用ELF格式(将会在第三章详细讨论)。当exec执行成功,它不向调用进程返回数据,而是使加载自文件的指令在ELF header中声明的程序入口处开始执行。exec有两个参数:可执行文件的文件名和字符串参数数组。例如

    +
    char* argv[3];
    +argv[0] = "echo";
    +argv[1] = "hello";
    +argv[2] = 0;
    +exec("/bin/echo", argv);
    +printf("exec error\n");
    +
    +

    这个代码片段将调用程序替换为了参数列表为echo hello/bin/echo程序运行,多数程序忽略参数数组中的第一个元素,它通常是程序名。

    +

    xv6的shell使用上述调用为用户运行程序。shell的主要结构很简单,请参见main(user/sh.c:145)。主循环使用getcmd函数从用户的输入中读取一行,然后调用fork创建一个shell进程的副本。父进程调用wait,子进程执行命令。例如:当用户向shell输入echo hello时,runcmd(user/sh.c:58) 将以echo hello为参数被调用来执行实际命令。对于“echo hello”,它将调用exec(user/sh.c:78)。如果exec成功,那么子进程将从echo而不是runcmd执行命令,在某刻echo会调用exit,这将导致父进程从main(user/sh.c:78)中的wait返回。

    +

    你或许想知道为什么execfork没有组合成为一个系统调用,稍后我们将会看到shell在其I/O重定向的实现中利用了这种分离。为了避免创建一个重复的进程然后立即替换它(使用exec)的浪费,操作内核通过使用虚拟内存技术(如copy-on-write)优化 fork 在这个用例中的实现(见第 4.6 节)。

    +

    Xv6 隐式地分配大多数用户空间内存:fork分配父内存的子副本所需的内存,exec分配足够的内存来保存可执行文件。在运行时需要更多内存的进程(可能是malloc)可以调用 sbrk(n)将其数据内存增加n个字节; sbrk返回新内存的位置。

    + + +
    + +
    +
    +
    + +

    results matching ""

    +
      + +
      +
      + +

      No results matching ""

      + +
      +
      +
      + +
      +
      + +
      + + + + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_1.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_1.md new file mode 100644 index 0000000..3068a1c --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_1.md @@ -0,0 +1,56 @@ +# 1.1 进程和内存 +Xv6进程由用户空间内存(指令、数据和堆栈)和对内核私有的每个进程状态组成。Xv6分时进程: 它透明地在等待执行的进程集合中切换可用的CPU。当一个进程没有执行时,xv6保存它的CPU寄存器,并在下一次运行该进程时恢复它们。内核利用进程id或PID标识每个进程。 + +一个进程可以使用fork系统调用创建一个新的进程。Fork创建了一个新的进程,其内存内容与调用进程(称为父进程)完全相同,称其为子进程。Fork在父子进程中都返回值。在父进程中,fork返回子类的PID;在子进程中,fork返回零。例如,考虑下面用C语言编写的程序片段 + +```c +// fork()在父进程中返回子进程的PID +// 在子进程中返回0 +int pid = fork(); +if(pid > 0) { + printf("parent: child=%d\n", pid); + pid = wait((int *) 0); + printf("child %d is done\n", pid); +} else if(pid == 0) { + printf("child: exiting\n"); + exit(0); +} else { + printf("fork error\n"); +} +``` + +`exit`系统调用导致调用进程停止执行并释放资源(如内存和打开的文件)。`exit`接受一个整数状态参数,通常0表示成功,1表示失败。`wait`系统调用返回当前进程的已退出(或已杀死)子进程的PID,并将子进程的退出状态复制到传递给`wait`的地址;如果调用方的子进程都没有退出,那么wait等待一个子进程退出。如果调用者没有子级,`wait`立即返回-1。如果父进程不关心子进程的退出状态,它可以传递一个0地址给`wait`。 + +在这个例子中,输出 + +``` +parent: child=1234 +child: exiting +``` + +可能以任何一种顺序出来,这取决于父或子谁先到达`printf`调用。子进程退出后,父进程的`wait`返回,导致父进程打印 + +``` +parent: child 1234 is done +``` + +尽管最初子进程与父进程有着相同的内存内容,但是二者在运行中拥有不同的内存空间和寄存器:在一个进程中改变变量不会影响到另一个进程。例如当`wait`的返回值存入父进程的变量`pid`中时,并不会影响子进程中的`pid`,子进程中`pid`仍然为0。 + +`exec`系统调用使用从文件系统中存储的文件所加载的新内存映像替换调用进程的内存。(百度百科:根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件)该文件必须有特殊的格式,它指定文件的哪部分存放指令,哪部分是数据,以及哪一条指令用于启动等等。xv6使用ELF格式(将会在第三章详细讨论)。当`exec`执行成功,它不向调用进程返回数据,而是使加载自文件的指令在`ELF header`中声明的程序入口处开始执行。`exec`有两个参数:可执行文件的文件名和字符串参数数组。例如 + +```c +char* argv[3]; +argv[0] = "echo"; +argv[1] = "hello"; +argv[2] = 0; +exec("/bin/echo", argv); +printf("exec error\n"); +``` + +这个代码片段将调用程序替换为了参数列表为`echo hello`的`/bin/echo`程序运行,多数程序忽略参数数组中的第一个元素,它通常是程序名。 + +xv6的shell使用上述调用为用户运行程序。shell的主要结构很简单,请参见`main`(***user/sh.c:145***)。主循环使用`getcmd`函数从用户的输入中读取一行,然后调用`fork`创建一个shell进程的副本。父进程调用`wait`,子进程执行命令。例如:当用户向shell输入`echo hello`时,`runcmd`(***user/sh.c:58***) 将以`echo hello`为参数被调用来执行实际命令。对于“`echo hello`”,它将调用`exec`(***user/sh.c:78***)。如果`exec`成功,那么子进程将从`echo`而不是`runcmd`执行命令,在某刻`echo`会调用`exit`,这将导致父进程从`main`(***user/sh.c:78***)中的`wait`返回。 + +你或许想知道为什么`exec`和`fork`没有组合成为一个系统调用,稍后我们将会看到shell在其I/O重定向的实现中利用了这种分离。为了避免创建一个重复的进程然后立即替换它(使用`exec`)的浪费,操作内核通过使用虚拟内存技术(如copy-on-write)优化 fork 在这个用例中的实现(见第 4.6 节)。 + +Xv6 隐式地分配大多数用户空间内存:`fork`分配父内存的子副本所需的内存,`exec`分配足够的内存来保存可执行文件。在运行时需要更多内存的进程(可能是`malloc`)可以调用 `sbrk(n)`将其数据内存增加n个字节; `sbrk`返回新内存的位置。 \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_2.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_2.html new file mode 100644 index 0000000..e054008 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_2.html @@ -0,0 +1,483 @@ + + + + + + + 1.2 I/O和文件描述符 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      +
      + +
      + +

      1.2 I/O和文件描述符

      +

      文件描述符是一个小整数(small integer),表示进程可以读取或写入的由内核管理的对象。进程可以通过打开一个文件、目录、设备,或创建一个管道,或复制一个已存在的描述符来获得一个文件描述符。为了简单起见,我们通常将文件描述符所指的对象称为“文件”;文件描述符接口将文件、管道和设备之间的差异抽象出来,使它们看起来都像字节流。我们将输入和输出称为 I/O。

      +

      在内部,xv6内核使用文件描述符作为每个进程表的索引,这样每个进程都有一个从零开始的文件描述符的私有空间。按照惯例,进程从文件描述符0读取(标准输入),将输出写入文件描述符1(标准输出),并将错误消息写入文件描述符2(标准错误)。正如我们将看到的,shell利用这个约定来实现I/O重定向和管道。shell确保它始终有三个打开的文件描述符(user/sh.c:151),这是控制台的默认文件描述符。

      +

      readwrite系统调用以字节为单位读取或写入已打开的以文件描述符命名的文件。read(fd,buf,n)从文件描述符fd读取最多n字节,将它们复制到buf,并返回读取的字节数,引用文件的每个文件描述符都有一个与之关联的偏移量。read从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,read返回0来表示文件的结束。

      +

      系统调用write(fd,buf,n)将buf中的n字节写入文件描述符,并返回写入的字节数。只有发生错误时才会写入小于n字节的数据。与读一样,write在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个write从上一个偏移量停止的地方开始写入。

      +

      以下程序片段(构成程序cat的本质)将数据从其标准输入复制到其标准输出。如果发生错误,它将消息写入标准错误:

      +
      char buf[512];
      +int n;
      +for (;;) {
      +    n = read(0, buf, sizeof buf);
      +    if (n == 0)
      +        break;
      +    if (n &lt; 0) {
      +        fprintf(2, "read error\n");
      +        exit(1);
      +    }
      +    if (write(1, buf, n) != n) {
      +        fprintf(2, "write error\n");
      +        exit(1);
      +    }
      +}
      +
      +

      代码片段中需要注意的重要一点是,cat不知道它是从文件、控制台还是管道读取。同样也不知道它是打印到控制台、文件还是其他什么地方。文件描述符的使用以及文件描述符0是输入而文件描述符1是输出的约定允许了cat的简单实现。

      +

      close系统调用释放一个文件描述符,使其可以被未来使用的openpipedup系统调用重用(见下文)。新分配的文件描述符总是当前进程中编号最小的未使用描述符。

      +

      文件描述符和fork相互作用,使I/O重定向更容易实现。fork复制父进程的文件描述符表及其内存,以便子级以与父级在开始时拥有完全相同的打开文件。系统调用exec替换了调用进程的内存,但保留其文件表。此行为允许shell通过fork实现I/O重定向,在子进程中重新打开选定的文件描述符,然后调用exec来运行新程序。下面是shell运行命令cat < input.txt的代码的简化版本。

      +
      char* argv[2];
      +argv[0] = "cat";
      +argv[1] = 0;
      +if (fork() == 0) {
      +    close(0);
      +    open("input.txt", O_RDONLY);
      +    exec("cat", argv);
      +}
      +
      +

      在子进程关闭文件描述符0之后,open保证使用新打开的input.txt:0的文件描述符作为最小的可用文件描述符。cat然后执行文件描述符0(标准输入),但引用的是input.txt。父进程的文件描述符不会被这个序列改变,因为它只修改子进程的描述符。

      +

      Xv6shell中的I/O重定向代码就是这样工作的(user/sh.c:82)。回想一下,在代码执行到这里时,shell已经fork出了子shell,runcmd将调用exec来加载新程序。

      +

      open的第二个参数由一组标志组成,这些标志以位表示,用于控制打开的操作。可能的值定义在文件控制(fcntl)头文件(kernel/fcntl.h:1-5)中

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      宏定义功能说明
      O_RDONLY只读
      O_WRONLY只写
      O_RDWR可读可写
      O_CREATE如果文件不存在则创建文件
      O_TRUNC将文件截断为零长度
      +

      现在应该很清楚为什么forkexec分离的用处了:在这两个调用之间,shell有机会对子进程进行I/O重定向,而不会干扰主shell的I/O设置。我们可以想象一个假设的forkexec系统调用组合,但是用这样的调用进行I/O重定向是很笨拙的。Shell可以在调用forkexec之前修改自己的I/O设置(然后撤销这些修改);或者forkexec可以将I/O重定向的指令作为参数;或者(最不吸引人的是)可以让每个程序(如cat)执行自己的I/O重定向。

      +

      尽管fork复制了文件描述符表,但是每个基础文件偏移量在父文件和子文件之间是共享的,比如下面的程序:

      +
      if (fork() == 0) {
      +    write(1, "hello ", 6);
      +    exit(0);
      +} else {
      +    wait(0);
      +    write(1, "world\n", 6);
      +}
      +
      +

      在这个片段的末尾,附加到文件描述符1的文件将包含数据hello world。父进程中的写操作(由于等待,只有在子进程完成后才运行)在子进程停止写入的位置进行。这种行为有助于从shell命令序列产生顺序输出,比如(echo hello;echo world) >output.txt

      +

      dup系统调用复制一个现有的文件描述符,返回一个引用自同一个底层I/O对象的新文件描述符。两个文件描述符共享一个偏移量,就像fork复制的文件描述符一样。这是另一种将“hello world”写入文件的方法:

      +
      fd = dup(1);
      +write(1, "hello ", 6);
      +write(fd, "world\n", 6);
      +
      +

      如果两个文件描述符是通过一系列forkdup调用从同一个原始文件描述符派生出来的,那么它们共享一个偏移量。否则,文件描述符不会共享偏移量,即使它们来自于对同一文件的打开调用。dup允许shell执行这样的命令:ls existing-file non-existing-file > tmp1 2>&12>&1告诉shell给命令的文件描述符2是描述符1的副本。现有文件的名称和不存在文件的错误信息都会显示在tmp1文件中。Xv6 shell不支持错误文件描述符的I/O重定向,但是现在你知道如何实现它了。

      +

      文件描述符是一个强大的抽象,因为它们隐藏了它们所连接的细节:写入文件描述符1的进程可能写入文件、设备(如控制台)或管道。

      + + +
      + +
      +
      +
      + +

      results matching ""

      +
        + +
        +
        + +

        No results matching ""

        + +
        +
        +
        + +
        +
        + +
        + + + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_2.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_2.md new file mode 100644 index 0000000..fd3d09d --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_2.md @@ -0,0 +1,88 @@ +# 1.2 I/O和文件描述符 + +文件描述符是一个小整数(small integer),表示进程可以读取或写入的由内核管理的对象。进程可以通过打开一个文件、目录、设备,或创建一个管道,或复制一个已存在的描述符来获得一个文件描述符。为了简单起见,我们通常将文件描述符所指的对象称为“文件”;文件描述符接口将文件、管道和设备之间的差异抽象出来,使它们看起来都像字节流。我们将输入和输出称为 I/O。 + +在内部,xv6内核使用文件描述符作为每个进程表的索引,这样每个进程都有一个从零开始的文件描述符的私有空间。按照惯例,进程从文件描述符0读取(标准输入),将输出写入文件描述符1(标准输出),并将错误消息写入文件描述符2(标准错误)。正如我们将看到的,shell利用这个约定来实现I/O重定向和管道。shell确保它始终有三个打开的文件描述符(***user/sh.c***:151),这是控制台的默认文件描述符。 + +`read`和`write`系统调用以字节为单位读取或写入已打开的以文件描述符命名的文件。`read(fd,buf,n)`从文件描述符fd读取最多n字节,将它们复制到buf,并返回读取的字节数,引用文件的每个文件描述符都有一个与之关联的偏移量。`read`从当前文件偏移量开始读取数据,然后将该偏移量前进所读取的字节数:(也就是说)后续读取将返回第一次读取返回的字节之后的字节。当没有更多的字节可读时,`read`返回0来表示文件的结束。 + +系统调用`write(fd,buf,n)`将buf中的n字节写入文件描述符,并返回写入的字节数。只有发生错误时才会写入小于n字节的数据。与读一样,`write`在当前文件偏移量处写入数据,然后将该偏移量向前推进写入的字节数:每个`write`从上一个偏移量停止的地方开始写入。 + +以下程序片段(构成程序`cat`的本质)将数据从其标准输入复制到其标准输出。如果发生错误,它将消息写入标准错误: + +```c +char buf[512]; +int n; +for (;;) { + n = read(0, buf, sizeof buf); + if (n == 0) + break; + if (n < 0) { + fprintf(2, "read error\n"); + exit(1); + } + if (write(1, buf, n) != n) { + fprintf(2, "write error\n"); + exit(1); + } +} +``` + +代码片段中需要注意的重要一点是,`cat`不知道它是从文件、控制台还是管道读取。同样也不知道它是打印到控制台、文件还是其他什么地方。文件描述符的使用以及文件描述符0是输入而文件描述符1是输出的约定允许了`cat`的简单实现。 + +`close`系统调用释放一个文件描述符,使其可以被未来使用的`open`、`pipe`或`dup`系统调用重用(见下文)。新分配的文件描述符总是当前进程中编号最小的未使用描述符。 + +文件描述符和`fork`相互作用,使I/O重定向更容易实现。`fork`复制父进程的文件描述符表及其内存,以便子级以与父级在开始时拥有完全相同的打开文件。系统调用`exec`替换了调用进程的内存,但保留其文件表。此行为允许shell通过`fork`实现I/O重定向,在子进程中重新打开选定的文件描述符,然后调用`exec`来运行新程序。下面是shell运行命令`cat < input.txt`的代码的简化版本。 + +```c +char* argv[2]; +argv[0] = "cat"; +argv[1] = 0; +if (fork() == 0) { + close(0); + open("input.txt", O_RDONLY); + exec("cat", argv); +} +``` + +在子进程关闭文件描述符0之后,`open`保证使用新打开的***input.txt***:0的文件描述符作为最小的可用文件描述符。`cat`然后执行文件描述符0(标准输入),但引用的是***input.txt***。父进程的文件描述符不会被这个序列改变,因为它只修改子进程的描述符。 + +Xv6shell中的I/O重定向代码就是这样工作的(***user/sh.c***:82)。回想一下,在代码执行到这里时,shell已经`fork`出了子shell,`runcmd`将调用`exec`来加载新程序。 + +`open`的第二个参数由一组标志组成,这些标志以位表示,用于控制打开的操作。可能的值定义在文件控制(fcntl)头文件(***kernel/fcntl.h***:1-5)中 + +| **宏定义** | **功能说明** | +| ---------- | ------------------------ | +| `O_RDONLY` | 只读 | +| `O_WRONLY` | 只写 | +| `O_RDWR` | 可读可写 | +| `O_CREATE` | 如果文件不存在则创建文件 | +| `O_TRUNC` | 将文件截断为零长度 | + +现在应该很清楚为什么`fork`和`exec`分离的用处了:在这两个调用之间,shell有机会对子进程进行I/O重定向,而不会干扰主shell的I/O设置。我们可以想象一个假设的`forkexec`系统调用组合,但是用这样的调用进行I/O重定向是很笨拙的。Shell可以在调用`forkexec`之前修改自己的I/O设置(然后撤销这些修改);或者`forkexec`可以将I/O重定向的指令作为参数;或者(最不吸引人的是)可以让每个程序(如cat)执行自己的I/O重定向。 + +尽管`fork`复制了文件描述符表,但是每个基础文件偏移量在父文件和子文件之间是共享的,比如下面的程序: + +```c +if (fork() == 0) { + write(1, "hello ", 6); + exit(0); +} else { + wait(0); + write(1, "world\n", 6); +} +``` + +在这个片段的末尾,附加到文件描述符1的文件将包含数据`hello world`。父进程中的写操作(由于等待,只有在子进程完成后才运行)在子进程停止写入的位置进行。这种行为有助于从shell命令序列产生顺序输出,比如`(echo hello;echo world) >output.txt`。 + +`dup`系统调用复制一个现有的文件描述符,返回一个引用自同一个底层I/O对象的新文件描述符。两个文件描述符共享一个偏移量,就像fork复制的文件描述符一样。这是另一种将“hello world”写入文件的方法: + +```c +fd = dup(1); +write(1, "hello ", 6); +write(fd, "world\n", 6); +``` + +如果两个文件描述符是通过一系列`fork`和`dup`调用从同一个原始文件描述符派生出来的,那么它们共享一个偏移量。否则,文件描述符不会共享偏移量,即使它们来自于对同一文件的打开调用。`dup`允许shell执行这样的命令:`ls existing-file non-existing-file > tmp1 2>&1`。`2>&1`告诉shell给命令的文件描述符2是描述符1的副本。现有文件的名称和不存在文件的错误信息都会显示在tmp1文件中。Xv6 shell不支持错误文件描述符的I/O重定向,但是现在你知道如何实现它了。 + +文件描述符是一个强大的抽象,因为它们隐藏了它们所连接的细节:写入文件描述符1的进程可能写入文件、设备(如控制台)或管道。 \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_3.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_3.html new file mode 100644 index 0000000..e654eba --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_3.html @@ -0,0 +1,439 @@ + + + + + + + 1.3 管道 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + +
        + +
        + + + + + + + + +
        +
        + +
        +
        + +
        + +

        1.3 管道

        +

        管道是作为一对文件描述符公开给进程的小型内核缓冲区,一个用于读取,一个用于写入。将数据写入管道的一端使得这些数据可以从管道的另一端读取。管道为进程提供了一种通信方式。

        +

        下面的示例代码使用连接到管道读端的标准输入来运行程序wc

        +
        int p[2];
        +char *argv[2];
        +argv[0] = "wc";
        +argv[1] = 0;
        +pipe(p);
        +if (fork() == 0) {
        +    close(0);
        +    dup(p[0]);
        +    close(p[0]);
        +    close(p[1]);
        +    exec("/bin/wc", argv);
        +} else {
        +    close(p[0]);
        +    write(p[1], "hello world\n", 12);
        +    close(p[1]);
        +}
        +
        +

        程序调用pipe,创建一个新的管道,并在数组p中记录读写文件描述符。在fork之后,父子进程都有指向管道的文件描述符。子进程调用closedup使文件描述符0指向管道的读取端(前面说过优先分配最小的未使用的描述符),然后关闭p中所存的文件描述符,并调用exec运行wc。当wc从它的标准输入读取时,就是从管道读取。父进程关闭管道的读取端,写入管道,然后关闭写入端。

        +

        如果没有可用的数据,则管道上的read操作等待写入数据或关闭所有指向写入端的文件描述符,在后一种情况下,read将返回0,就像到达数据文件的末尾一样。事实上,read在新数据不可能到达前会一直阻塞,这是子进程在执行上面的wc之前关闭管道的写入端非常重要的一个原因:如果wc的文件描述符之一指向管道的写入端,wc将永远看不到文件的结束。

        +

        Xv6 shell以类似于上面代码(user/sh.c:100)的方式实现了诸如grep fork sh.c | wc -l之类的管道。子进程创建一个管道将管道的左端和右端连接起来。然后对管道的左端调用forkruncmd,对管道的右端调用forkruncmd,并等待两者都完成。管道的右端可能是一个命令,该命令本身包含一个管道(例如,a | b | c),该管道本身fork为两个新的子进程(一个用于b,一个用于c)。因此,shell可以创建一个进程树。这个树的叶子是命令,内部节点是等待左右两个子进程完成的进程。

        +

        原则上,可以让内部节点在管道的左端运行,但是正确地这样做会使实现复杂化。考虑进行以下修改:将sh.c更改为不对p->left进行fork,并在内部进程中运行runcmd(p->left)。然后,例如,echo hi | wc将不会产生输出,因为当echo hiruncmd中退出时,内部进程将退出,而不会调用fork来运行管道的右端。这个不正确的行为可以通过不调用内部进程的runcmd中的exit来修复,但是这个修复使代码复杂化:现在runcmd需要知道它是否是一个内部进程。同样的,当没有对(p->right)执行fork时也会更加复杂。例如,只需进行上述的修改,sleep 10 | echo hi将立即打印“hi”,而不是在10秒后,因为echo将立即运行并退出,而不是等待sleep完成。因为sh.c的目标是尽可能的简单,所以它不会试图避免创建内部进程。

        +

        管道看起来并不比临时文件更强大:下面的管道命令行

        +
        echo hello world | wc
        +
        +

        可以不通过管道实现,如下

        +
        echo hello world > /tmp/xyz; wc < /tmp/xyz
        +
        +

        在这种情况下,管道相比临时文件至少有四个优势

        +
          +
        • 首先,管道会自动清理自己;在文件重定向时,shell使用完/tmp/xyz后必须小心删除

          +
        • +
        • 其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。

          +
        • +
        • 第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。

          +
        • +
        • 第四,如果实现进程间通讯,管道的块读写比文件的非块语义更有效率。

          +
        • +
        + + +
        + +
        +
        +
        + +

        results matching ""

        +
          + +
          +
          + +

          No results matching ""

          + +
          +
          +
          + +
          +
          + +
          + + + + + + + + + + + + + + +
          + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_3.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_3.md new file mode 100644 index 0000000..8a5e3db --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_3.md @@ -0,0 +1,54 @@ +# 1.3 管道 + +管道是作为一对文件描述符公开给进程的小型内核缓冲区,一个用于读取,一个用于写入。将数据写入管道的一端使得这些数据可以从管道的另一端读取。管道为进程提供了一种通信方式。 + +下面的示例代码使用连接到管道读端的标准输入来运行程序`wc`。 + +```c +int p[2]; +char *argv[2]; +argv[0] = "wc"; +argv[1] = 0; +pipe(p); +if (fork() == 0) { + close(0); + dup(p[0]); + close(p[0]); + close(p[1]); + exec("/bin/wc", argv); +} else { + close(p[0]); + write(p[1], "hello world\n", 12); + close(p[1]); +} +``` + +程序调用`pipe`,创建一个新的管道,并在数组p中记录读写文件描述符。在`fork`之后,父子进程都有指向管道的文件描述符。子进程调用`close`和`dup`使文件描述符0指向管道的读取端(前面说过优先分配最小的未使用的描述符),然后关闭p中所存的文件描述符,并调用`exec`运行`wc`。当`wc`从它的标准输入读取时,就是从管道读取。父进程关闭管道的读取端,写入管道,然后关闭写入端。 + +如果没有可用的数据,则管道上的`read`操作等待写入数据或关闭所有指向写入端的文件描述符,在后一种情况下,`read`将返回0,就像到达数据文件的末尾一样。事实上,`read`在新数据不可能到达前会一直阻塞,这是子进程在执行上面的`wc`之前关闭管道的写入端非常重要的一个原因:如果wc的文件描述符之一指向管道的写入端,wc将永远看不到文件的结束。 + +Xv6 shell以类似于上面代码(***user/sh.c***:100)的方式实现了诸如`grep fork sh.c | wc -l`之类的管道。子进程创建一个管道将管道的左端和右端连接起来。然后对管道的左端调用`fork`和`runcmd`,对管道的右端调用`fork`和`runcmd`,并等待两者都完成。管道的右端可能是一个命令,该命令本身包含一个管道(例如,`a | b | c`),该管道本身`fork`为两个新的子进程(一个用于b,一个用于c)。因此,shell可以创建一个进程树。这个树的叶子是命令,内部节点是等待左右两个子进程完成的进程。 + +原则上,可以让内部节点在管道的左端运行,但是正确地这样做会使实现复杂化。考虑进行以下修改:将***sh.c***更改为不对`p->left`进行`fork`,并在内部进程中运行`runcmd(p->left)`。然后,例如,`echo hi | wc`将不会产生输出,因为当`echo hi`在`runcmd`中退出时,内部进程将退出,而不会调用`fork`来运行管道的右端。这个不正确的行为可以通过不调用内部进程的`runcmd`中的`exit`来修复,但是这个修复使代码复杂化:现在`runcmd`需要知道它是否是一个内部进程。同样的,当没有对`(p->right)`执行`fork`时也会更加复杂。例如,只需进行上述的修改,`sleep 10 | echo hi`将立即打印“hi”,而不是在10秒后,因为`echo`将立即运行并退出,而不是等待`sleep`完成。因为***sh.c***的目标是尽可能的简单,所以它不会试图避免创建内部进程。 + +管道看起来并不比临时文件更强大:下面的管道命令行 + +```bash +echo hello world | wc +``` + +可以不通过管道实现,如下 + +```bash +echo hello world > /tmp/xyz; wc < /tmp/xyz +``` + +在这种情况下,管道相比临时文件至少有四个优势 + +- 首先,管道会自动清理自己;在文件重定向时,shell使用完`/tmp/xyz`后必须小心删除 + +- 其次,管道可以任意传递长的数据流,而文件重定向需要磁盘上足够的空闲空间来存储所有的数据。 + +- 第三,管道允许并行执行管道阶段,而文件方法要求第一个程序在第二个程序启动之前完成。 + +- 第四,如果实现进程间通讯,管道的块读写比文件的非块语义更有效率。 \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_4.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_4.html new file mode 100644 index 0000000..a5f1b30 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_4.html @@ -0,0 +1,450 @@ + + + + + + + 1.4 文件系统 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + + + + + + + +
          + +
          + +
          + + + + + + + + +
          +
          + +
          +
          + +
          + +

          1.4 文件系统

          +

          Xv6文件系统提供数据文件(包含未解释的字节数组)和目录(包含对数据文件和其他目录的命名引用)。这些目录形成一个树,从一个叫做根的特殊目录开始。像/a/b/c这样的路径是指在根目录/下名为a的目录中名为b的目录中名为c的文件或目录。不以/开始的路径相对于调用进程的当前工作目录进行计算,当前工作目录可以通过chdir系统调用进行更改。下面两个代码片段打开相同的文件(假设所有相关的目录都存在)

          +
          chdir("/a");
          +chdir("b");
          +open("c", O_RDONLY);
          +open("/a/b/c", O_RDONLY);
          +
          +

          上面代码将进程的当前目录更改为/a/b;下面代码既不引用也不更改进程的当前目录

          +

          还有创建新文件和目录的系统调用:

          +
            +
          • mkdir创建一个新目录

            +
          • +
          • open中若使用O_CREATE标志将会创建一个新的数据文件

            +
          • +
          • mknod创建一个新的设备文件

            +
          • +
          +

          这个例子说明了这三点:

          +
          mkdir("/dir");
          +fd = open("/dir/file", O_CREATE | O_WRONLY);
          +close(fd);
          +mknod("/console", 1, 1);
          +
          +

          mknod创建一个引用设备的特殊文件。与设备文件相关联的是主设备号和次设备号(mknod的两个参数),它们唯一地标识了一个内核设备。当进程稍后打开设备文件时,内核将使用内核设备实现readwrite系统调用,而不是使用文件系统。

          +

          一个文件的名字和文件本身是不同的;同一个底层文件(叫做inode,索引结点)可以有多个名字(叫做link,链接)。每个链接都由目录中的一个条目组成;该条目包含一个文件名和一个inode引用。Inode保存有关文件的元数据(用于解释或帮助理解信息的数据),包括其类型(文件/目录/设备)、长度、文件内容在磁盘上的位置以及指向文件的链接数。

          +

          fstat系统调用从文件描述符所引用的inode中检索信息。它填充一个stat类型的结构体,struct statstat.h(kernel/stat.h)中定义为

          +
          #define T_DIR 1    // Directory
          +#define T_FILE 2   // File
          +#define T_DEVICE 3 // Device
          +struct stat {
          +    int dev;     // 文件系统的磁盘设备
          +    uint ino;    // Inode编号
          +    short type;  // 文件类型
          +    short nlink; // 指向文件的链接数
          +    uint64 size; // 文件字节数
          +};
          +
          +

          link系统调用创建另一个文件名,该文件名指向与现有文件相同的inode。下面的代码片段创建了一个名字既为a又为b的新文件

          +
          open("a", O_CREATE | O_WRONLY);
          +link("a", "b");
          +
          +

          a读取或写入与从b读取或写入是相同的操作。每个inode由唯一的inode编号标识。在上面的代码序列之后,可以通过检查fstat的结果来确定a和b引用相同的底层内容:两者都将返回相同的inode号(ino),并且nlink计数将被设置为2。

          +

          unlink系统调用从文件系统中删除一个名称。只有当文件的链接数为零且没有文件描述符引用时,文件的inode和包含其内容的磁盘空间才会被释放,因此添加

          +
          unlink("a");
          +
          +

          最后一行代码序列中会使inode和文件内容可以作为b访问。此外

          +
          fd = open("/tmp/xyz", O_CREATE | O_RDWR);
          +unlink("/tmp/xyz");
          +
          +

          是创建没有名称的临时inode的惯用方法,该临时inode将在进程关闭fd或退出时被清理。

          +

          Unix以用户级程序的形式提供了可从shell调用的文件实用程序,例如mkdirlnrm。这种设计允许任何人通过添加新的用户级程序来扩展命令行接口。事后看来,这个计划似乎是显而易见的,但是在Unix时代设计的其他系统经常将这样的命令构建到shell中(并将shell构建到内核中)

          +

          一个例外是cd,它是内置在shell(user/sh.c:160)。cd必须更改shell本身的当前工作目录。如果cd作为常规命令运行,那么shell将分出一个子进程,子进程将运行cdcd将更改子进程的工作目录。父目录(即shell的)的工作目录不会改变。

          + + +
          + +
          +
          +
          + +

          results matching ""

          +
            + +
            +
            + +

            No results matching ""

            + +
            +
            +
            + +
            +
            + +
            + + + + + + + + + + + + + + +
            + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_4.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_4.md new file mode 100644 index 0000000..0a86080 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_4.md @@ -0,0 +1,76 @@ +# 1.4 文件系统 + +Xv6文件系统提供数据文件(包含未解释的字节数组)和目录(包含对数据文件和其他目录的命名引用)。这些目录形成一个树,从一个叫做根的特殊目录开始。像`/a/b/c`这样的路径是指在根目录`/`下名为`a`的目录中名为`b`的目录中名为`c`的文件或目录。不以`/`开始的路径相对于调用进程的当前工作目录进行计算,当前工作目录可以通过`chdir`系统调用进行更改。下面两个代码片段打开相同的文件(假设所有相关的目录都存在) + +```c +chdir("/a"); +chdir("b"); +open("c", O_RDONLY); +open("/a/b/c", O_RDONLY); +``` + +上面代码将进程的当前目录更改为`/a/b`;下面代码既不引用也不更改进程的当前目录 + +还有创建新文件和目录的系统调用: + +- `mkdir`创建一个新目录 + +- `open`中若使用`O_CREATE`标志将会创建一个新的数据文件 + +- `mknod`创建一个新的设备文件 + +这个例子说明了这三点: + +```c +mkdir("/dir"); +fd = open("/dir/file", O_CREATE | O_WRONLY); +close(fd); +mknod("/console", 1, 1); +``` + +`mknod`创建一个引用设备的特殊文件。与设备文件相关联的是主设备号和次设备号(`mknod`的两个参数),它们唯一地标识了一个内核设备。当进程稍后打开设备文件时,内核将使用内核设备实现`read`和`write`系统调用,而不是使用文件系统。 + +一个文件的名字和文件本身是不同的;同一个底层文件(叫做inode,索引结点)可以有多个名字(叫做link,链接)。每个链接都由目录中的一个条目组成;该条目包含一个文件名和一个inode引用。Inode保存有关文件的元数据(用于解释或帮助理解信息的数据),包括其类型(文件/目录/设备)、长度、文件内容在磁盘上的位置以及指向文件的链接数。 + +`fstat`系统调用从文件描述符所引用的inode中检索信息。它填充一个`stat`类型的结构体,`struct stat`在***stat.h(kernel/stat.h)***中定义为 + +```c +#define T_DIR 1 // Directory +#define T_FILE 2 // File +#define T_DEVICE 3 // Device +struct stat { + int dev; // 文件系统的磁盘设备 + uint ino; // Inode编号 + short type; // 文件类型 + short nlink; // 指向文件的链接数 + uint64 size; // 文件字节数 +}; +``` + +`link`系统调用创建另一个文件名,该文件名指向与现有文件相同的inode。下面的代码片段创建了一个名字既为***a***又为***b***的新文件 + +```c +open("a", O_CREATE | O_WRONLY); +link("a", "b"); +``` + +从***a***读取或写入与从***b***读取或写入是相同的操作。每个inode由唯一的inode编号标识。在上面的代码序列之后,可以通过检查`fstat`的结果来确定a和b引用相同的底层内容:两者都将返回相同的inode号(`ino`),并且`nlink`计数将被设置为2。 + +`unlink`系统调用从文件系统中删除一个名称。只有当文件的链接数为零且没有文件描述符引用时,文件的inode和包含其内容的磁盘空间才会被释放,因此添加 + +```c +unlink("a"); +``` + +最后一行代码序列中会使inode和文件内容可以作为b访问。此外 + +```c +fd = open("/tmp/xyz", O_CREATE | O_RDWR); +unlink("/tmp/xyz"); +``` + +是创建没有名称的临时inode的惯用方法,该临时inode将在进程关闭fd或退出时被清理。 + +Unix以用户级程序的形式提供了可从shell调用的文件实用程序,例如`mkdir`、`ln`和`rm`。这种设计允许任何人通过添加新的用户级程序来扩展命令行接口。事后看来,这个计划似乎是显而易见的,但是在Unix时代设计的其他系统经常将这样的命令构建到shell中(并将shell构建到内核中) + +一个例外是`cd`,它是内置在shell(***user/sh.c***:160)。`cd`必须更改shell本身的当前工作目录。如果`cd`作为常规命令运行,那么shell将分出一个子进程,子进程将运行`cd`,`cd`将更改子进程的工作目录。父目录(即shell的)的工作目录不会改变。 \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_5.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_5.html new file mode 100644 index 0000000..8aa6e98 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_5.html @@ -0,0 +1,405 @@ + + + + + + + 1.5 真实世界 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + +
            + +
            + +
            + + + + + + + + +
            +
            + +
            +
            + +
            + +

            1.5 真实世界

            +

            Unix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作,这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化,这种文化对Unix的强大和流行做出了卓越贡献,shell是第一个所谓的“脚本语言”。Unix系统调用接口今天仍然存在于BSD、Linux和MacOSx等系统中。

            +

            Unix系统调用接口已经通过便携式操作系统接口(POSIX)标准进行了标准化。Xv6与POSIX不兼容:它缺少许多系统调用(包括lseek等基本系统调用),并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了,同时提供一个简单的类unix系统调用接口。为了运行基本的Unix程序,有些人扩展了xv6,增加了一些系统调用和一个简单的c库。然而,现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如,它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展,提供了许多超越POSIX的特性。

            +

            Unix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是Plan9,它将“资源是文件”的概念应用到网络、图形等等。然而,大多数unix衍生的操作系统并没有遵循这条路。

            +

            文件系统和文件描述符是强大的抽象。即便如此,还有其他的操作系统接口模型。Multics,Unix的前身,以一种看起来像内存的方式抽象了文件存储,产生了一种非常不同的接口风格。Multics设计的复杂性直接影响了Unix的设计者,他们试图使设计更简单。

            +

            Xv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用Unix的术语来说,所有的Xv6进程都作为root运行。

            +

            本书研究了xv6如何实现其类Unix接口,但这些思想和概念不仅仅适用于Unix。任何操作系统都必须在底层硬件上复用进程,彼此隔离进程,并提供受控制的进程间通讯机制。在学习了xv6之后,你应该去看看更复杂的操作系统,以及这些系统中与xv6相同的底层基本概念。

            + + +
            + +
            +
            +
            + +

            results matching ""

            +
              + +
              +
              + +

              No results matching ""

              + +
              +
              +
              + +
              +
              + +
              + + + + + + + + + + + + + + +
              + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_5.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_5.md new file mode 100644 index 0000000..b1159f0 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_5.md @@ -0,0 +1,13 @@ +# 1.5 真实世界 + +Unix将“标准”文件描述符、管道和方便的shell语法结合起来进行操作,这是编写通用可重用程序方面的一大进步。这个想法引发了一种“软件工具”的文化,这种文化对Unix的强大和流行做出了卓越贡献,shell是第一个所谓的“脚本语言”。Unix系统调用接口今天仍然存在于BSD、Linux和MacOSx等系统中。 + +Unix系统调用接口已经通过便携式操作系统接口(POSIX)标准进行了标准化。Xv6与POSIX不兼容:它缺少许多系统调用(包括lseek等基本系统调用),并且它提供的许多系统调用与标准不同。我们xv6的主要目标是简单明了,同时提供一个简单的类unix系统调用接口。为了运行基本的Unix程序,有些人扩展了xv6,增加了一些系统调用和一个简单的c库。然而,现代内核比xv6提供了更多的系统调用和更多种类的内核服务。例如,它们支持网络工作、窗口系统、用户级线程、许多设备的驱动程序等等。现代内核不断快速发展,提供了许多超越POSIX的特性。 + +Unix通过一组文件名和文件描述符接口统一访问多种类型的资源(文件、目录和设备)。这个想法可以扩展到更多种类的资源;一个很好的例子是Plan9,它将“资源是文件”的概念应用到网络、图形等等。然而,大多数unix衍生的操作系统并没有遵循这条路。 + +文件系统和文件描述符是强大的抽象。即便如此,还有其他的操作系统接口模型。Multics,Unix的前身,以一种看起来像内存的方式抽象了文件存储,产生了一种非常不同的接口风格。Multics设计的复杂性直接影响了Unix的设计者,他们试图使设计更简单。 + +Xv6没有提供一个用户概念或者保护一个用户不受另一个用户的伤害;用Unix的术语来说,所有的Xv6进程都作为root运行。 + +本书研究了xv6如何实现其类Unix接口,但这些思想和概念不仅仅适用于Unix。任何操作系统都必须在底层硬件上复用进程,彼此隔离进程,并提供受控制的进程间通讯机制。在学习了xv6之后,你应该去看看更复杂的操作系统,以及这些系统中与xv6相同的底层基本概念。 \ No newline at end of file diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_6.html b/docs/tranlate_books/book-riscv-rev1/c1/s1_6.html new file mode 100644 index 0000000..c3cd636 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_6.html @@ -0,0 +1,394 @@ + + + + + + + 1.6 练习 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + + + + + + + + +
              + +
              + +
              + + + + + + + + +
              +
              + +
              +
              + +
              + +

              1.6 练习

              +

              编写一个使用UNIX系统调用的程序,通过一对管道在两个进程之间“ping-pong”一个字节(也就是像打乒乓球一样来回传递),每个方向一个管道。以每秒的交换次数为单位,测量程序的性能。

              + + +
              + +
              +
              +
              + +

              results matching ""

              +
                + +
                +
                + +

                No results matching ""

                + +
                +
                +
                + +
                +
                + +
                + + + + + + + + + + +
                + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/c1/s1_6.md b/docs/tranlate_books/book-riscv-rev1/c1/s1_6.md new file mode 100644 index 0000000..ea571c7 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/c1/s1_6.md @@ -0,0 +1,4 @@ +# 1.6 练习 + +编写一个使用UNIX系统调用的程序,通过一对管道在两个进程之间“ping-pong”一个字节(也就是像打乒乓球一样来回传递),每个方向一个管道。以每秒的交换次数为单位,测量程序的性能。 + diff --git a/docs/tranlate_books/book-riscv-rev1/images/c1/p1.png b/docs/tranlate_books/book-riscv-rev1/images/c1/p1.png new file mode 100644 index 0000000..a328ce6 Binary files /dev/null and b/docs/tranlate_books/book-riscv-rev1/images/c1/p1.png differ diff --git a/docs/tranlate_books/book-riscv-rev1/summary.html b/docs/tranlate_books/book-riscv-rev1/summary.html new file mode 100644 index 0000000..ef8d6cc --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/summary.html @@ -0,0 +1,400 @@ + + + + + + + book-riscv-rev1 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                +
                + + + + + + + + +
                + +
                + +
                + + + + + + + + +
                +
                + +
                +
                + +
                + +

                XV6:一个简单,类UNIX的教学用操作系统

                +

                本书是6.S081最重要的参考书目,其中详细的介绍了XV6的设计细节,在课程前往往需要阅读对应章节,做实验时也要回来查看。

                + + +
                + +
                +
                +
                + +

                results matching ""

                +
                  + +
                  +
                  + +

                  No results matching ""

                  + +
                  +
                  +
                  + +
                  +
                  + +
                  + + + + + + + + + + + + + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tranlate_books/book-riscv-rev1/summary.md b/docs/tranlate_books/book-riscv-rev1/summary.md new file mode 100644 index 0000000..74258a2 --- /dev/null +++ b/docs/tranlate_books/book-riscv-rev1/summary.md @@ -0,0 +1,3 @@ +XV6:一个简单,类UNIX的教学用操作系统 + +本书是6.S081最重要的参考书目,其中详细的介绍了XV6的设计细节,在课程前往往需要阅读对应章节,做实验时也要回来查看。 \ No newline at end of file